Skip to content

Commit 5c830dc

Browse files
test: Add tests for default ACL behavior on update
1 parent eb620f2 commit 5c830dc

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

spec/ParseACL.spec.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,4 +951,65 @@ describe('Parse.ACL', () => {
951951
expect(acl[user.id].write).toBeTrue();
952952
expect(acl[user.id].read).toBeTrue();
953953
});
954+
955+
it('should not overwrite ACL with defaultACL on update', async () => {
956+
await new Parse.Object('TestObject').save();
957+
const schema = await Parse.Server.database.loadSchema();
958+
await schema.updateClass(
959+
'TestObject',
960+
{},
961+
{
962+
create: { '*': true },
963+
update: { '*': true },
964+
ACL: {
965+
'*': { read: true },
966+
currentUser: { read: true, write: true },
967+
},
968+
}
969+
);
970+
const user = await Parse.User.signUp('testuser', 'p@ssword');
971+
const obj = new Parse.Object('TestObject');
972+
await obj.save(null, { sessionToken: user.getSessionToken() });
973+
974+
const originalAcl = obj.getACL().toJSON();
975+
expect(originalAcl['*']).toEqual({ read: true });
976+
expect(originalAcl[user.id]).toEqual({ read: true, write: true });
977+
978+
obj.set('field', 'value');
979+
await obj.save(null, { sessionToken: user.getSessionToken() });
980+
981+
const updatedAcl = obj.getACL().toJSON();
982+
expect(updatedAcl).toEqual(originalAcl);
983+
});
984+
985+
it('should allow explicit ACL modification on update', async () => {
986+
await new Parse.Object('TestObject').save();
987+
const schema = await Parse.Server.database.loadSchema();
988+
await schema.updateClass(
989+
'TestObject',
990+
{},
991+
{
992+
create: { '*': true },
993+
update: { '*': true },
994+
ACL: {
995+
'*': { read: true },
996+
currentUser: { read: true, write: true },
997+
},
998+
}
999+
);
1000+
const user = await Parse.User.signUp('testuser', 'p@ssword');
1001+
const obj = new Parse.Object('TestObject');
1002+
await obj.save(null, { sessionToken: user.getSessionToken() });
1003+
1004+
const customAcl = new Parse.ACL();
1005+
customAcl.setPublicReadAccess(false);
1006+
customAcl.setReadAccess(user.id, true);
1007+
customAcl.setWriteAccess(user.id, true);
1008+
obj.setACL(customAcl);
1009+
await obj.save(null, { sessionToken: user.getSessionToken() });
1010+
1011+
const updatedAcl = obj.getACL().toJSON();
1012+
expect(updatedAcl['*']).toBeUndefined();
1013+
expect(updatedAcl[user.id]).toEqual({ read: true, write: true });
1014+
});
9541015
});

0 commit comments

Comments
 (0)