@@ -522,4 +522,93 @@ describe('Personally Identifiable Information', () => {
522
522
. catch ( done . fail ) ;
523
523
} ) ;
524
524
} ) ;
525
+
526
+ describe ( 'with privilaged user' , ( ) => {
527
+ let adminUser ;
528
+
529
+ beforeEach ( async done => {
530
+ const adminRole = await new Parse . Role (
531
+ 'Administrator' ,
532
+ new Parse . ACL ( )
533
+ ) . save ( null , { useMasterKey : true } ) ;
534
+
535
+ const managementRole = new Parse . Role (
536
+ 'managementOf_user' + user . id ,
537
+ new Parse . ACL ( user )
538
+ ) ;
539
+ managementRole . getRoles ( ) . add ( adminRole ) ;
540
+ await managementRole . save ( null , { useMasterKey : true } ) ;
541
+
542
+ const userACL = new Parse . ACL ( ) ;
543
+ userACL . setReadAccess ( managementRole , true ) ;
544
+ await user . setACL ( userACL ) . save ( null , { useMasterKey : true } ) ;
545
+
546
+ adminUser = await Parse . User . signUp ( 'administrator' , 'secure' ) ;
547
+ adminUser = await Parse . User . logIn ( adminUser . get ( 'username' ) , 'secure' ) ;
548
+ await adminRole
549
+ . getUsers ( )
550
+ . add ( adminUser )
551
+ . save ( null , { useMasterKey : true } ) ;
552
+
553
+ done ( ) ;
554
+ } ) ;
555
+
556
+ it ( 'privilaged user should be able to get user PII via API with object' , done => {
557
+ const userObj = new ( Parse . Object . extend ( Parse . User ) ) ( ) ;
558
+ userObj . id = user . id ;
559
+ userObj
560
+ . fetch ( )
561
+ . then (
562
+ fetchedUser => {
563
+ expect ( fetchedUser . get ( 'email' ) ) . toBe ( EMAIL ) ;
564
+ } ,
565
+ e => console . error ( 'error' , e )
566
+ )
567
+ . then ( done )
568
+ . catch ( done . fail ) ;
569
+ } ) ;
570
+
571
+ it ( 'privilaged user should be able to get user PII via API with Find' , done => {
572
+ new Parse . Query ( Parse . User )
573
+ . equalTo ( 'objectId' , user . id )
574
+ . find ( )
575
+ . then ( fetchedUser => {
576
+ expect ( fetchedUser . get ( 'email' ) ) . toBe ( EMAIL ) ;
577
+ expect ( fetchedUser . get ( 'zip' ) ) . toBe ( ZIP ) ;
578
+ expect ( fetchedUser . get ( 'ssn' ) ) . toBe ( SSN ) ;
579
+ done ( ) ;
580
+ } ) ;
581
+ } ) ;
582
+
583
+ it ( 'privilaged user should be able to get user PII via API with Get' , done => {
584
+ new Parse . Query ( Parse . User ) . get ( user . id ) . then ( fetchedUser => {
585
+ expect ( fetchedUser . get ( 'email' ) ) . toBe ( EMAIL ) ;
586
+ expect ( fetchedUser . get ( 'zip' ) ) . toBe ( ZIP ) ;
587
+ expect ( fetchedUser . get ( 'ssn' ) ) . toBe ( SSN ) ;
588
+ done ( ) ;
589
+ } ) ;
590
+ } ) ;
591
+
592
+ it ( 'privilaged user should get user PII via REST by ID' , done => {
593
+ request ( {
594
+ url : `http://localhost:8378/1/classes/_User/${ user . id } ` ,
595
+ json : true ,
596
+ headers : {
597
+ 'X-Parse-Application-Id' : 'test' ,
598
+ 'X-Parse-Javascript-Key' : 'test' ,
599
+ 'X-Parse-Session-Token' : adminUser . getSessionToken ( ) ,
600
+ } ,
601
+ } )
602
+ . then (
603
+ response => {
604
+ const result = response . data ;
605
+ const fetchedUser = result ;
606
+ expect ( fetchedUser . zip ) . toBe ( ZIP ) ;
607
+ expect ( fetchedUser . email ) . toBe ( EMAIL ) ;
608
+ } ,
609
+ e => console . error ( 'error' , e . message )
610
+ )
611
+ . then ( ( ) => done ( ) ) ;
612
+ } ) ;
613
+ } ) ;
525
614
} ) ;
0 commit comments