From 019f9e55e10150c3b4de160e55495c1c13b62aee Mon Sep 17 00:00:00 2001 From: Antonio Davi Macedo Coelho de Castro Date: Sat, 9 Sep 2017 10:27:54 -0700 Subject: [PATCH] Fix(MongoTransform): Ignore Audience legacy fields (#4018) --- spec/AudienceRouter.spec.js | 36 ++++++++++++++++++++ src/Adapters/Storage/Mongo/MongoTransform.js | 4 +++ 2 files changed, 40 insertions(+) diff --git a/spec/AudienceRouter.spec.js b/spec/AudienceRouter.spec.js index dc9363b5..0acaac1b 100644 --- a/spec/AudienceRouter.spec.js +++ b/spec/AudienceRouter.spec.js @@ -284,4 +284,40 @@ describe('AudiencesRouter', () => { } ); }); + + it_exclude_dbs(['postgres'])('should not log error with legacy parse.com times_used and _last_used fields', (done) => { + const database = (new Config(Parse.applicationId)).database.adapter.database; + const now = new Date(); + Parse._request('POST', 'push_audiences', { name: 'My Audience', query: JSON.stringify({ deviceType: 'ios' })}, { useMasterKey: true }) + .then((audience) => { + database.collection('test__Audience').updateOne( + { _id: audience.objectId }, + { + $set: { + times_used: 1, + _last_used: now + } + }, + {}, + (error) => { + expect(error).toEqual(null) + database.collection('test__Audience').find({ _id: audience.objectId}).toArray( + (error, rows) => { + expect(error).toEqual(null) + expect(rows[0]['times_used']).toEqual(1); + expect(rows[0]['_last_used']).toEqual(now); + Parse._request('GET', 'push_audiences', {}, {useMasterKey: true}) + .then((results) => { + expect(results.results.length).toEqual(1); + expect(results.results[0].name).toEqual('My Audience'); + expect(results.results[0].query.deviceType).toEqual('ios'); + expect(results.results[0].times_used).toEqual(undefined); + expect(results.results[0]._last_used).toEqual(undefined); + done(); + }) + .catch((error) => { done.fail(error); }) + }); + }); + }); + }); }); diff --git a/src/Adapters/Storage/Mongo/MongoTransform.js b/src/Adapters/Storage/Mongo/MongoTransform.js index c8ba3c29..61510287 100644 --- a/src/Adapters/Storage/Mongo/MongoTransform.js +++ b/src/Adapters/Storage/Mongo/MongoTransform.js @@ -924,6 +924,10 @@ const mongoObjectToParseObject = (className, mongoObject, schema) => { restObject['expiresAt'] = Parse._encode(new Date(mongoObject[key])); break; default: + if (className === '_Audience' && (key === '_last_used' || key === 'times_used')) { + // Ignore these parse.com legacy fields + break; + } // Check other auth data keys var authDataMatch = key.match(/^_auth_data_([a-zA-Z0-9_]+)$/); if (authDataMatch) {