Skip to content

Commit e069b20

Browse files
corbanbflovilmart
authored andcommitted
adding simple test for adding and removing users on a role. (#3198)
1 parent ae30ec6 commit e069b20

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

spec/ParseRole.spec.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,4 +347,67 @@ describe('Parse Role testing', () => {
347347
})
348348
});
349349

350+
it('should add multiple users to a role and remove users', (done) => {
351+
var user, user2, user3;
352+
var role;
353+
var obj;
354+
355+
var prACL = new Parse.ACL();
356+
prACL.setPublicReadAccess(true);
357+
prACL.setPublicWriteAccess(true);
358+
359+
createTestUser().then((x) => {
360+
user = x;
361+
user2 = new Parse.User();
362+
return user2.save({ username: 'user2', password: 'omgbbq' });
363+
}).then(() => {
364+
user3 = new Parse.User();
365+
return user3.save({ username: 'user3', password: 'omgbbq' });
366+
}).then(() => {
367+
role = new Parse.Role('sharedRole', prACL);
368+
var users = role.relation('users');
369+
users.add(user);
370+
users.add(user2);
371+
users.add(user3);
372+
return role.save({}, { useMasterKey: true });
373+
}).then(() => {
374+
// query for saved role and get 3 users
375+
var query = new Parse.Query('_Role');
376+
query.equalTo('name', 'sharedRole');
377+
return query.find({ useMasterKey: true });
378+
}).then((role) => {
379+
expect(role.length).toEqual(1);
380+
var users = role[0].relation('users').query();
381+
return users.find({ useMasterKey: true });
382+
}).then((users) => {
383+
expect(users.length).toEqual(3);
384+
obj = new Parse.Object('TestObjectRoles');
385+
obj.set('ACL', prACL);
386+
return obj.save(null, { useMasterKey: true });
387+
}).then(() => {
388+
// Above, the Admin role was added to the Customer role.
389+
// An object secured by the Customer ACL should be able to be edited by the Admin user.
390+
obj.set('changedByUsers', true);
391+
return obj.save(null, { sessionToken: user.getSessionToken() });
392+
}).then(() => {
393+
// query for saved role and get 3 users
394+
var query = new Parse.Query('_Role');
395+
query.equalTo('name', 'sharedRole');
396+
return query.find({ useMasterKey: true });
397+
}).then((role) => {
398+
expect(role.length).toEqual(1);
399+
var users = role[0].relation('users');
400+
users.remove(user);
401+
users.remove(user3);
402+
return role[0].save({}, { useMasterKey: true });
403+
}).then((role) =>{
404+
var users = role.relation('users').query();
405+
return users.find({ useMasterKey: true });
406+
}).then((users) => {
407+
expect(users.length).toEqual(1);
408+
expect(users[0].get('username')).toEqual('user2');
409+
done();
410+
});
411+
});
412+
350413
});

0 commit comments

Comments
 (0)