From 23d3e7d59331875f52381798ecf1f3574336944d Mon Sep 17 00:00:00 2001 From: Justin Lettau Date: Wed, 27 Jul 2022 12:09:13 -0700 Subject: [PATCH 1/3] test: failing unit test for #1510 --- src/__tests__/ParseFile-test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/__tests__/ParseFile-test.js b/src/__tests__/ParseFile-test.js index fb045dbc3..063000818 100644 --- a/src/__tests__/ParseFile-test.js +++ b/src/__tests__/ParseFile-test.js @@ -66,6 +66,12 @@ describe('ParseFile', () => { expect(file._source.type).toBe(''); }); + it('can create files with base64 encoding (no padding)', () => { + const file = new ParseFile('parse.txt', { base64: 'SGVsbG8gV29ybGQh' }); + expect(file._source.base64).toBe('SGVsbG8gV29ybGQh'); + expect(file._source.type).toBe(''); + }); + it('can set the default type to be text/plain when using base64', () => { const file = new ParseFile('parse.txt', { base64: 'data:;base64,ParseA==', From 5b4108b93d3a79e3145ad43b806828852d114e68 Mon Sep 17 00:00:00 2001 From: Justin Lettau Date: Thu, 28 Jul 2022 07:15:58 -0700 Subject: [PATCH 2/3] fix: creating a Parse.File with base64 string fails Closes #1510 --- src/ParseFile.js | 2 +- src/__tests__/ParseFile-test.js | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ParseFile.js b/src/ParseFile.js index 0cc4e7d62..9997f9f42 100644 --- a/src/ParseFile.js +++ b/src/ParseFile.js @@ -43,7 +43,7 @@ export type FileSource = }; const base64Regex = new RegExp( - '([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))', + '([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=)|([0-9a-zA-Z+/]{4}))', 'i' ); diff --git a/src/__tests__/ParseFile-test.js b/src/__tests__/ParseFile-test.js index 063000818..31bfb7cc6 100644 --- a/src/__tests__/ParseFile-test.js +++ b/src/__tests__/ParseFile-test.js @@ -60,15 +60,21 @@ describe('ParseFile', () => { process.env.PARSE_BUILD = 'node'; }); - it('can create files with base64 encoding', () => { - const file = new ParseFile('parse.txt', { base64: 'ParseA==' }); - expect(file._source.base64).toBe('ParseA=='); + it('can create files with base64 encoding (no padding)', () => { + const file = new ParseFile('parse.txt', { base64: 'YWJj' }); + expect(file._source.base64).toBe('YWJj'); expect(file._source.type).toBe(''); }); - it('can create files with base64 encoding (no padding)', () => { - const file = new ParseFile('parse.txt', { base64: 'SGVsbG8gV29ybGQh' }); - expect(file._source.base64).toBe('SGVsbG8gV29ybGQh'); + 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(''); + }); + + 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(''); }); From ddd8b6ce9d57c5bf7ff84dbbc35e4865a70befa9 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Thu, 28 Jul 2022 16:34:22 +0200 Subject: [PATCH 3/3] use stricter regex --- src/ParseFile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ParseFile.js b/src/ParseFile.js index 9997f9f42..4498456ce 100644 --- a/src/ParseFile.js +++ b/src/ParseFile.js @@ -43,7 +43,7 @@ export type FileSource = }; const base64Regex = new RegExp( - '([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=)|([0-9a-zA-Z+/]{4}))', + '([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/][AQgw]==)|([0-9a-zA-Z+/]{2}[AEIMQUYcgkosw048]=)|([0-9a-zA-Z+/]{4}))', 'i' );