@@ -347,4 +347,67 @@ describe('Parse Role testing', () => {
347
347
} )
348
348
} ) ;
349
349
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
+
350
413
} ) ;
0 commit comments