@@ -2818,4 +2818,121 @@ describe('Parse.User testing', () => {
2818
2818
done ( ) ;
2819
2819
} ) ;
2820
2820
} ) ;
2821
+
2822
+ it ( 'should not allow updates to emailVerified' , done => {
2823
+ var emailAdapter = {
2824
+ sendVerificationEmail : ( ) => { } ,
2825
+ sendPasswordResetEmail : ( ) => Promise . resolve ( ) ,
2826
+ sendMail : ( ) => Promise . resolve ( )
2827
+ }
2828
+
2829
+ const user = new Parse . User ( ) ;
2830
+ user . set ( {
2831
+ username : 'hello' ,
2832
+ password : 'world' ,
2833
+
2834
+ } )
2835
+
2836
+ reconfigureServer ( {
2837
+ appName : 'unused' ,
2838
+ verifyUserEmails : true ,
2839
+ emailAdapter : emailAdapter ,
2840
+ publicServerURL : "http://localhost:8378/1"
2841
+ } ) . then ( ( ) => {
2842
+ return user . signUp ( ) ;
2843
+ } ) . then ( ( ) => {
2844
+ return Parse . User . current ( ) . set ( 'emailVerified' , true ) . save ( ) ;
2845
+ } ) . then ( ( ) => {
2846
+ fail ( "Should not be able to update emailVerified" ) ;
2847
+ done ( ) ;
2848
+ } ) . catch ( ( err ) => {
2849
+ expect ( err . message ) . toBe ( "Clients aren't allowed to manually update email verification." ) ;
2850
+ done ( ) ;
2851
+ } ) ;
2852
+ } ) ;
2853
+
2854
+ it ( 'should not retrieve hidden fields' , done => {
2855
+
2856
+ var emailAdapter = {
2857
+ sendVerificationEmail : ( ) => { } ,
2858
+ sendPasswordResetEmail : ( ) => Promise . resolve ( ) ,
2859
+ sendMail : ( ) => Promise . resolve ( )
2860
+ }
2861
+
2862
+ const user = new Parse . User ( ) ;
2863
+ user . set ( {
2864
+ username : 'hello' ,
2865
+ password : 'world' ,
2866
+
2867
+ } )
2868
+
2869
+ reconfigureServer ( {
2870
+ appName : 'unused' ,
2871
+ verifyUserEmails : true ,
2872
+ emailAdapter : emailAdapter ,
2873
+ publicServerURL : "http://localhost:8378/1"
2874
+ } ) . then ( ( ) => {
2875
+ return user . signUp ( ) ;
2876
+ } ) . then ( ( ) => rp ( {
2877
+ method : 'GET' ,
2878
+ url : 'http://localhost:8378/1/users/me' ,
2879
+ json : true ,
2880
+ headers : {
2881
+ 'X-Parse-Application-Id' : Parse . applicationId ,
2882
+ 'X-Parse-Session-Token' : Parse . User . current ( ) . getSessionToken ( ) ,
2883
+ 'X-Parse-REST-API-Key' : 'rest'
2884
+ } ,
2885
+ } ) ) . then ( ( res ) => {
2886
+ expect ( res . emailVerified ) . toBe ( false ) ;
2887
+ expect ( res . _email_verify_token ) . toBeUndefined ( ) ;
2888
+ done ( )
2889
+ } ) . then ( ( ) => rp ( {
2890
+ method : 'GET' ,
2891
+ url : 'http://localhost:8378/1/users/' + Parse . User . current ( ) . id ,
2892
+ json : true ,
2893
+ headers : {
2894
+ 'X-Parse-Application-Id' : Parse . applicationId ,
2895
+ 'X-Parse-REST-API-Key' : 'rest'
2896
+ } ,
2897
+ } ) ) . then ( ( res ) => {
2898
+ expect ( res . emailVerified ) . toBe ( false ) ;
2899
+ expect ( res . _email_verify_token ) . toBeUndefined ( ) ;
2900
+ done ( )
2901
+ } ) . catch ( ( err ) => {
2902
+ fail ( JSON . stringify ( err ) ) ;
2903
+ done ( ) ;
2904
+ } ) ;
2905
+ } ) ;
2906
+
2907
+ it ( 'should not allow updates to hidden fields' , done => {
2908
+ var emailAdapter = {
2909
+ sendVerificationEmail : ( ) => { } ,
2910
+ sendPasswordResetEmail : ( ) => Promise . resolve ( ) ,
2911
+ sendMail : ( ) => Promise . resolve ( )
2912
+ }
2913
+
2914
+ const user = new Parse . User ( ) ;
2915
+ user . set ( {
2916
+ username : 'hello' ,
2917
+ password : 'world' ,
2918
+
2919
+ } )
2920
+
2921
+ reconfigureServer ( {
2922
+ appName : 'unused' ,
2923
+ verifyUserEmails : true ,
2924
+ emailAdapter : emailAdapter ,
2925
+ publicServerURL : "http://localhost:8378/1"
2926
+ } ) . then ( ( ) => {
2927
+ return user . signUp ( ) ;
2928
+ } ) . then ( ( ) => {
2929
+ return Parse . User . current ( ) . set ( '_email_verify_token' , 'bad' ) . save ( ) ;
2930
+ } ) . then ( ( ) => {
2931
+ fail ( "Should not be able to update email verification token" ) ;
2932
+ done ( ) ;
2933
+ } ) . catch ( ( err ) => {
2934
+ expect ( err ) . toBeDefined ( ) ;
2935
+ done ( ) ;
2936
+ } ) ;
2937
+ } ) ;
2821
2938
} ) ;
0 commit comments