@@ -141,6 +141,85 @@ describe('ParseLiveQueryServer', function() {
141
141
parseServer . server . close ( ( ) => done ( ) ) ;
142
142
} ) ;
143
143
144
+ it ( 'properly passes the CLP to afterSave/afterDelete hook' , function ( done ) {
145
+ function setPermissionsOnClass ( className , permissions , doPut ) {
146
+ var request = require ( 'request' ) ;
147
+ let op = request . post ;
148
+ if ( doPut )
149
+ {
150
+ op = request . put ;
151
+ }
152
+ return new Promise ( ( resolve , reject ) => {
153
+ op ( {
154
+ url : Parse . serverURL + '/schemas/' + className ,
155
+ headers : {
156
+ 'X-Parse-Application-Id' : Parse . applicationId ,
157
+ 'X-Parse-Master-Key' : Parse . masterKey ,
158
+ } ,
159
+ json : true ,
160
+ body : {
161
+ classLevelPermissions : permissions
162
+ }
163
+ } , ( error , response , body ) => {
164
+ if ( error ) {
165
+ return reject ( error ) ;
166
+ }
167
+ if ( body . error ) {
168
+ return reject ( body ) ;
169
+ }
170
+ return resolve ( body ) ;
171
+ } )
172
+ } ) ;
173
+ }
174
+
175
+ let saveSpy ;
176
+ let deleteSpy ;
177
+ reconfigureServer ( {
178
+ liveQuery : {
179
+ classNames : [ 'Yolo' ]
180
+ }
181
+ } ) . then ( ( parseServer ) => {
182
+ saveSpy = spyOn ( parseServer . config . liveQueryController , 'onAfterSave' ) ;
183
+ deleteSpy = spyOn ( parseServer . config . liveQueryController , 'onAfterDelete' ) ;
184
+ return setPermissionsOnClass ( 'Yolo' , {
185
+ create : { '*' : true } ,
186
+ delete : { '*' : true }
187
+ } )
188
+ } ) . then ( ( ) => {
189
+ const obj = new Parse . Object ( 'Yolo' ) ;
190
+ return obj . save ( ) ;
191
+ } ) . then ( ( obj ) => {
192
+ return obj . destroy ( ) ;
193
+ } ) . then ( ( ) => {
194
+ expect ( saveSpy ) . toHaveBeenCalled ( ) ;
195
+ const saveArgs = saveSpy . calls . mostRecent ( ) . args ;
196
+ expect ( saveArgs . length ) . toBe ( 4 ) ;
197
+ expect ( saveArgs [ 0 ] ) . toBe ( 'Yolo' ) ;
198
+ expect ( saveArgs [ 3 ] ) . toEqual ( {
199
+ get : { } ,
200
+ addField : { } ,
201
+ create : { '*' : true } ,
202
+ find : { } ,
203
+ update : { } ,
204
+ delete : { '*' : true } ,
205
+ } ) ;
206
+
207
+ expect ( deleteSpy ) . toHaveBeenCalled ( ) ;
208
+ const deleteArgs = deleteSpy . calls . mostRecent ( ) . args ;
209
+ expect ( deleteArgs . length ) . toBe ( 4 ) ;
210
+ expect ( deleteArgs [ 0 ] ) . toBe ( 'Yolo' ) ;
211
+ expect ( deleteArgs [ 3 ] ) . toEqual ( {
212
+ get : { } ,
213
+ addField : { } ,
214
+ create : { '*' : true } ,
215
+ find : { } ,
216
+ update : { } ,
217
+ delete : { '*' : true } ,
218
+ } ) ;
219
+ done ( ) ;
220
+ } ) . catch ( done . fail ) ;
221
+ } ) ;
222
+
144
223
145
224
it ( 'can handle connect command' , function ( ) {
146
225
const parseLiveQueryServer = new ParseLiveQueryServer ( 10 , 10 , { } ) ;
0 commit comments