@@ -2818,4 +2818,121 @@ describe('Parse.User testing', () => {
28182818 done ( ) ;
28192819 } ) ;
28202820 } ) ;
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+ } ) ;
28212938} ) ;
0 commit comments