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