Skip to content

Commit 4d43614

Browse files
committed
Refactor MongoTransform.js (#1823)
* Split transformAtom into transfromTopLevelAtom and transformInteriorAtom * Use single param for inArray and inObject * Tidyness in transformKeyValue * Add transformInteriorKeyValue * Remove update from tranformInteriorKeyValue * Split out transform update * Move validation out of transfromUpdate * Remove force paramater from transformTopLevelAtom throw error after if necessary * Turn transformKeyValue into transfromKey since it is only used for that purpose * Remove unnecessary stuff from transformKey * convert transformKey to use parse format schema * interior keys fixes * Add test for interior keys with special names * Correct validation of inner keys
1 parent d7d4699 commit 4d43614

File tree

3 files changed

+205
-177
lines changed

3 files changed

+205
-177
lines changed

spec/ParseAPI.spec.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1437,4 +1437,36 @@ describe('miscellaneous', function() {
14371437
done();
14381438
});
14391439
});
1440+
1441+
it('doesnt convert interior keys of objects that use special names', done => {
1442+
let obj = new Parse.Object('Obj');
1443+
obj.set('val', { createdAt: 'a', updatedAt: 1 });
1444+
obj.save()
1445+
.then(obj => new Parse.Query('Obj').get(obj.id))
1446+
.then(obj => {
1447+
expect(obj.get('val').createdAt).toEqual('a');
1448+
expect(obj.get('val').updatedAt).toEqual(1);
1449+
done();
1450+
});
1451+
});
1452+
1453+
it('bans interior keys containing . or $', done => {
1454+
new Parse.Object('Obj').save({innerObj: {'key with a $': 'fails'}})
1455+
.catch(error => {
1456+
expect(error.code).toEqual(Parse.Error.INVALID_NESTED_KEY);
1457+
return new Parse.Object('Obj').save({innerObj: {'key with a .': 'fails'}});
1458+
})
1459+
.catch(error => {
1460+
expect(error.code).toEqual(Parse.Error.INVALID_NESTED_KEY);
1461+
return new Parse.Object('Obj').save({innerObj: {innerInnerObj: {'key with $': 'fails'}}});
1462+
})
1463+
.catch(error => {
1464+
expect(error.code).toEqual(Parse.Error.INVALID_NESTED_KEY);
1465+
return new Parse.Object('Obj').save({innerObj: {innerInnerObj: {'key with .': 'fails'}}});
1466+
})
1467+
.catch(error => {
1468+
expect(error.code).toEqual(Parse.Error.INVALID_NESTED_KEY);
1469+
done();
1470+
})
1471+
});
14401472
});

0 commit comments

Comments
 (0)