diff --git a/spec/MongoTransform.spec.js b/spec/MongoTransform.spec.js index f3eba2ffcd..9ae40e1615 100644 --- a/spec/MongoTransform.spec.js +++ b/spec/MongoTransform.spec.js @@ -221,7 +221,7 @@ describe('parseObjectToMongoObjectForCreate', () => { done(); }); - it('writes the old ACL format in addition to rperm and wperm', (done) => { + it('writes the old ACL format in addition to rperm and wperm on create', (done) => { var input = { _rperm: ['*'], _wperm: ['Kevin'], @@ -229,10 +229,29 @@ describe('parseObjectToMongoObjectForCreate', () => { var output = transform.parseObjectToMongoObjectForCreate(null, input, { fields: {} }); expect(typeof output._acl).toEqual('object'); - expect(output._acl["Kevin"].w).toBeTruthy(); - expect(output._acl["Kevin"].r).toBeUndefined(); + expect(output._acl['Kevin'].w).toBeTruthy(); + expect(output._acl['Kevin'].r).toBeUndefined(); + expect(output._rperm).toEqual(input._rperm); + expect(output._wperm).toEqual(input._wperm); done(); - }) + }); + + it('writes the old ACL format in addition to rperm and wperm on update', (done) => { + var input = { + _rperm: ['*'], + _wperm: ['Kevin'] + }; + + var output = transform.transformUpdate(null, input, { fields: {} }); + var set = output.$set; + expect(typeof set).toEqual('object'); + expect(typeof set._acl).toEqual('object'); + expect(set._acl['Kevin'].w).toBeTruthy(); + expect(set._acl['Kevin'].r).toBeUndefined(); + expect(set._rperm).toEqual(input._rperm); + expect(set._wperm).toEqual(input._wperm); + done(); + }); it('untransforms from _rperm and _wperm to ACL', (done) => { var input = { diff --git a/src/Adapters/Storage/Mongo/MongoTransform.js b/src/Adapters/Storage/Mongo/MongoTransform.js index d200276b0e..5f043252ed 100644 --- a/src/Adapters/Storage/Mongo/MongoTransform.js +++ b/src/Adapters/Storage/Mongo/MongoTransform.js @@ -330,8 +330,8 @@ const parseObjectToMongoObjectForCreate = (className, restCreate, schema) => { // Main exposed method to help update old objects. const transformUpdate = (className, restUpdate, parseFormatSchema) => { let mongoUpdate = {}; - let acl = addLegacyACL(restUpdate)._acl; - if (acl) { + let acl = addLegacyACL(restUpdate); + if (acl._rperm || acl._wperm || acl._acl) { mongoUpdate.$set = {}; if (acl._rperm) { mongoUpdate.$set._rperm = acl._rperm;