@@ -88,6 +88,55 @@ describe('Parse.User testing', () => {
88
88
} ) ;
89
89
} ) ;
90
90
91
+ it ( 'should respect ACL without locking user out' , ( done ) => {
92
+ let user = new Parse . User ( ) ;
93
+ let ACL = new Parse . ACL ( ) ;
94
+ ACL . setPublicReadAccess ( false ) ;
95
+ ACL . setPublicWriteAccess ( false ) ;
96
+ user . setUsername ( 'asdf' ) ;
97
+ user . setPassword ( 'zxcv' ) ;
98
+ user . setACL ( ACL ) ;
99
+ user . signUp ( ) . then ( ( user ) => {
100
+ return Parse . User . logIn ( "asdf" , "zxcv" ) ;
101
+ } ) . then ( ( user ) => {
102
+ equal ( user . get ( "username" ) , "asdf" ) ;
103
+ const ACL = user . getACL ( ) ;
104
+ expect ( ACL . getReadAccess ( user ) ) . toBe ( true ) ;
105
+ expect ( ACL . getWriteAccess ( user ) ) . toBe ( true ) ;
106
+ expect ( ACL . getPublicReadAccess ( ) ) . toBe ( false ) ;
107
+ expect ( ACL . getPublicWriteAccess ( ) ) . toBe ( false ) ;
108
+ const perms = ACL . permissionsById ;
109
+ expect ( Object . keys ( perms ) . length ) . toBe ( 1 ) ;
110
+ expect ( perms [ user . id ] . read ) . toBe ( true ) ;
111
+ expect ( perms [ user . id ] . write ) . toBe ( true ) ;
112
+ expect ( perms [ '*' ] ) . toBeUndefined ( ) ;
113
+ // Try to lock out user
114
+ let newACL = new Parse . ACL ( ) ;
115
+ newACL . setReadAccess ( user . id , false ) ;
116
+ newACL . setWriteAccess ( user . id , false ) ;
117
+ user . setACL ( newACL ) ;
118
+ return user . save ( ) ;
119
+ } ) . then ( ( user ) => {
120
+ return Parse . User . logIn ( "asdf" , "zxcv" ) ;
121
+ } ) . then ( ( user ) => {
122
+ equal ( user . get ( "username" ) , "asdf" ) ;
123
+ const ACL = user . getACL ( ) ;
124
+ expect ( ACL . getReadAccess ( user ) ) . toBe ( true ) ;
125
+ expect ( ACL . getWriteAccess ( user ) ) . toBe ( true ) ;
126
+ expect ( ACL . getPublicReadAccess ( ) ) . toBe ( false ) ;
127
+ expect ( ACL . getPublicWriteAccess ( ) ) . toBe ( false ) ;
128
+ const perms = ACL . permissionsById ;
129
+ expect ( Object . keys ( perms ) . length ) . toBe ( 1 ) ;
130
+ expect ( perms [ user . id ] . read ) . toBe ( true ) ;
131
+ expect ( perms [ user . id ] . write ) . toBe ( true ) ;
132
+ expect ( perms [ '*' ] ) . toBeUndefined ( ) ;
133
+ done ( ) ;
134
+ } ) . catch ( ( err ) => {
135
+ fail ( "Should not fail" ) ;
136
+ done ( ) ;
137
+ } )
138
+ } ) ;
139
+
91
140
it ( "user login with files" , ( done ) => {
92
141
let file = new Parse . File ( "yolo.txt" , [ 1 , 2 , 3 ] , "text/plain" ) ;
93
142
file . save ( ) . then ( ( file ) => {
0 commit comments