diff --git a/integration/test/ParseFileTest.js b/integration/test/ParseFileTest.js index c594ff3d3..d8e68c309 100644 --- a/integration/test/ParseFileTest.js +++ b/integration/test/ParseFileTest.js @@ -64,7 +64,7 @@ describe('Parse.File', () => { assert.equal(data, 'ParseA=='); }); - it('can get file data from base64', async () => { + it('can get file data from base64 (saved)', async () => { const file = new Parse.File('parse-server-logo', { base64: 'ParseA==' }); await file.save(); let data = await file.getData(); @@ -76,6 +76,12 @@ describe('Parse.File', () => { assert.equal(data, 'ParseA=='); }); + it('can get file data from base64 (unsaved)', async () => { + const file = new Parse.File('parse-server-logo', { base64: 'ParseA==' }); + const data = await file.getData(); + assert.equal(data, 'ParseA=='); + }); + it('can get file data from full base64', async () => { const file = new Parse.File('parse-server-logo', { base64: 'data:image/jpeg;base64,ParseA==', diff --git a/src/ParseFile.js b/src/ParseFile.js index 197d8c046..08349f977 100644 --- a/src/ParseFile.js +++ b/src/ParseFile.js @@ -137,7 +137,10 @@ class ParseFile { } else if (data && typeof data.base64 === 'string') { const base64 = data.base64.split(',').slice(-1)[0]; const dataType = - specifiedType || data.base64.split(';').slice(0, 1)[0].split(':').slice(1, 2)[0] || 'text/plain'; + specifiedType || + data.base64.split(';').slice(0, 1)[0].split(':').slice(1, 2)[0] || + 'text/plain'; + this._data = base64; this._source = { format: 'base64', base64, diff --git a/src/__tests__/ParseFile-test.js b/src/__tests__/ParseFile-test.js index caab362a2..2e66ba19c 100644 --- a/src/__tests__/ParseFile-test.js +++ b/src/__tests__/ParseFile-test.js @@ -64,18 +64,21 @@ describe('ParseFile', () => { const file = new ParseFile('parse.txt', { base64: 'YWJj' }); expect(file._source.base64).toBe('YWJj'); expect(file._source.type).toBe('text/plain'); + expect(file._data).toBe('YWJj'); }); it('can create files with base64 encoding (1 padding)', () => { const file = new ParseFile('parse.txt', { base64: 'YWI=' }); expect(file._source.base64).toBe('YWI='); expect(file._source.type).toBe('text/plain'); + expect(file._data).toBe('YWI='); }); it('can create files with base64 encoding (2 padding)', () => { const file = new ParseFile('parse.txt', { base64: 'ParseA==' }); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe('text/plain'); + expect(file._data).toBe('ParseA=='); }); it('can set the default type to be text/plain when using base64', () => { @@ -84,6 +87,7 @@ describe('ParseFile', () => { }); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe('text/plain'); + expect(file._data).toBe('ParseA=='); }); it('can extract data type from base64', () => { @@ -92,6 +96,7 @@ describe('ParseFile', () => { }); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe('image/png'); + expect(file._data).toBe('ParseA=='); }); it('can extract data type from base64 with a filename parameter', () => { @@ -100,6 +105,7 @@ describe('ParseFile', () => { }); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe('application/pdf'); + expect(file._data).toBe('ParseA=='); }); it('can create files with file uri', () => { @@ -116,6 +122,7 @@ describe('ParseFile', () => { }); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe('audio/m4a'); + expect(file._data).toBe('ParseA=='); }); it('can extract data type from base64 with a complex mime type', () => { @@ -124,6 +131,7 @@ describe('ParseFile', () => { }); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe('application/vnd.google-earth.kml+xml'); + expect(file._data).toBe('ParseA=='); }); it('can extract data type from base64 with a charset param', () => { @@ -132,18 +140,21 @@ describe('ParseFile', () => { }); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe('application/vnd.3gpp.pic-bw-var'); + expect(file._data).toBe('ParseA=='); }); it('can create files with byte arrays', () => { const file = new ParseFile('parse.txt', [61, 170, 236, 120]); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe(''); + expect(file._data).toBe('ParseA=='); }); it('can create files with all types of characters', () => { const file = new ParseFile('parse.txt', [11, 239, 191, 215, 80, 52]); expect(file._source.base64).toBe('C++/11A0'); expect(file._source.type).toBe(''); + expect(file._data).toBe('C++/11A0'); }); it('can create an empty file', () => { @@ -341,6 +352,7 @@ describe('ParseFile', () => { const file = new ParseFile('parse.txt', [61, 170, 236, 120], '', metadata, tags); expect(file._source.base64).toBe('ParseA=='); expect(file._source.type).toBe(''); + expect(file._data).toBe('ParseA=='); expect(file.metadata()).toBe(metadata); expect(file.tags()).toBe(tags); });