@@ -1667,7 +1667,48 @@ describe('schemas', () => {
1667
1667
fail ( JSON . stringify ( error ) ) ;
1668
1668
done ( ) ;
1669
1669
} )
1670
- } )
1670
+ } ) ;
1671
+
1672
+ it ( 'unset field in beforeSave should not stop object creation' , ( done ) => {
1673
+ const hook = {
1674
+ method : function ( req , res ) {
1675
+ if ( req . object . get ( 'undesiredField' ) ) {
1676
+ req . object . unset ( 'undesiredField' ) ;
1677
+ }
1678
+ return res . success ( ) ;
1679
+ }
1680
+ } ;
1681
+ spyOn ( hook , 'method' ) . and . callThrough ( ) ;
1682
+ Parse . Cloud . beforeSave ( 'AnObject' , hook . method ) ;
1683
+ setPermissionsOnClass ( 'AnObject' , {
1684
+ get : { "*" : true } ,
1685
+ find : { "*" : true } ,
1686
+ create : { '*' : true } ,
1687
+ update : { '*' : true } ,
1688
+ delete : { '*' : true } ,
1689
+ addField :{ }
1690
+ } ) . then ( ( ) => {
1691
+ const obj = new Parse . Object ( 'AnObject' ) ;
1692
+ obj . set ( 'desiredField' , 'createMe' ) ;
1693
+ return obj . save ( null , { useMasterKey : true } ) ;
1694
+ } ) . then ( ( ) => {
1695
+ const obj = new Parse . Object ( 'AnObject' ) ;
1696
+ obj . set ( 'desiredField' , 'This value should be kept' ) ;
1697
+ obj . set ( 'undesiredField' , 'This value should be IGNORED' ) ;
1698
+ return obj . save ( ) ;
1699
+ } ) . then ( ( ) => {
1700
+ const query = new Parse . Query ( 'AnObject' ) ;
1701
+ return query . find ( ) ;
1702
+ } ) . then ( ( results ) => {
1703
+ expect ( results . length ) . toBe ( 2 ) ;
1704
+ expect ( results [ 0 ] . has ( 'desiredField' ) ) . toBe ( true ) ;
1705
+ expect ( results [ 1 ] . has ( 'desiredField' ) ) . toBe ( true ) ;
1706
+ expect ( results [ 0 ] . has ( 'undesiredField' ) ) . toBe ( false ) ;
1707
+ expect ( results [ 1 ] . has ( 'undesiredField' ) ) . toBe ( false ) ;
1708
+ expect ( hook . method ) . toHaveBeenCalled ( ) ;
1709
+ done ( ) ;
1710
+ } ) ;
1711
+ } ) ;
1671
1712
1672
1713
it ( 'gives correct response when deleting a schema with CLPs (regression test #1919)' , done => {
1673
1714
new Parse . Object ( 'MyClass' ) . save ( { data : 'foo' } )
0 commit comments