@@ -146,6 +146,85 @@ describe('ParseLiveQueryServer', function() {
146146 parseServer . server . close ( done ) ;
147147 } ) ;
148148
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+
149228
150229 it ( 'can handle connect command' , function ( ) {
151230 var parseLiveQueryServer = new ParseLiveQueryServer ( 10 , 10 , { } ) ;
0 commit comments