From 463efbb0884cf04fdc00a2a3f6caaec692e4eacb Mon Sep 17 00:00:00 2001 From: Julian Vogels Date: Wed, 10 Mar 2021 15:46:18 +0100 Subject: [PATCH 1/2] Add failing test for beforeSave when saving an object with invalid field name --- spec/CloudCode.spec.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spec/CloudCode.spec.js b/spec/CloudCode.spec.js index c726bfd89e..e898219455 100644 --- a/spec/CloudCode.spec.js +++ b/spec/CloudCode.spec.js @@ -90,6 +90,27 @@ describe('Cloud Code', () => { ); }); + it('beforeSave invalid field name rejection', function (done) { + Parse.Cloud.beforeSave('BeforeSaveFail', function () { + throw new Error('Error from BeforeSave'); + }); + + const obj = new Parse.Object('BeforeSaveFail'); + obj.set('length', 1); + obj.save().then( + () => { + fail('Should not have been able to save BeforeSaveFailure class.'); + done(); + }, + error => { + if (error.message != 'Error from BeforeSave') { + fail('Save failed before beforeSave was called.'); + } + done(); + } + ); + }); + it('returns an error', done => { Parse.Cloud.define('cloudCodeWithError', () => { /* eslint-disable no-undef */ From 1516895a19578fc23de2cbe30e13663b8e6a56ce Mon Sep 17 00:00:00 2001 From: Julian Vogels Date: Wed, 10 Mar 2021 16:09:46 +0100 Subject: [PATCH 2/2] Improve test for beforeSave of object with invalid field name --- spec/CloudCode.spec.js | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/spec/CloudCode.spec.js b/spec/CloudCode.spec.js index e898219455..86bdb40cf8 100644 --- a/spec/CloudCode.spec.js +++ b/spec/CloudCode.spec.js @@ -90,23 +90,33 @@ describe('Cloud Code', () => { ); }); - it('beforeSave invalid field name rejection', function (done) { - Parse.Cloud.beforeSave('BeforeSaveFail', function () { - throw new Error('Error from BeforeSave'); + it('unsets invalid field name in beforeSave on update', function (done) { + Parse.Cloud.beforeSave('InvalidFieldNameObject', function (request) { + const object = request.object; + object.unset('length'); }); - const obj = new Parse.Object('BeforeSaveFail'); - obj.set('length', 1); + const obj = new Parse.Object('InvalidFieldNameObject'); + // Create object obj.save().then( () => { - fail('Should not have been able to save BeforeSaveFailure class.'); - done(); + obj.set('length', 1); + // Update object + obj.save().then( + () => { + done(); + }, + error => { + fail( + 'Should have unset invalid field name in beforeSave and saved successfully, \ + but error occured before beforeSave: ' + + error.message + ); + } + ); }, error => { - if (error.message != 'Error from BeforeSave') { - fail('Save failed before beforeSave was called.'); - } - done(); + fail(error.message); } ); });