@@ -127,6 +127,7 @@ describe('Email Verification Token Expiration: ', () => {
127127 user . set ( 'email' , 'user@parse.com' ) ;
128128 return user . signUp ( ) ;
129129 } )
130+ . then ( ( ) => jasmine . timeout ( ) )
130131 . then ( ( ) => {
131132 request ( {
132133 url : sendEmailOptions . link ,
@@ -168,6 +169,7 @@ describe('Email Verification Token Expiration: ', () => {
168169 user . set ( 'email' , 'user@parse.com' ) ;
169170 return user . signUp ( ) ;
170171 } )
172+ . then ( ( ) => jasmine . timeout ( ) )
171173 . then ( ( ) => {
172174 request ( {
173175 url : sendEmailOptions . link ,
@@ -215,6 +217,7 @@ describe('Email Verification Token Expiration: ', () => {
215217 user . set ( 'email' , 'user@parse.com' ) ;
216218 return user . signUp ( ) ;
217219 } )
220+ . then ( ( ) => jasmine . timeout ( ) )
218221 . then ( ( ) => {
219222 request ( {
220223 url : sendEmailOptions . link ,
@@ -388,6 +391,7 @@ describe('Email Verification Token Expiration: ', () => {
388391 user2 . setPassword ( 'expiringToken' ) ;
389392 user2 . set ( 'email' , 'user2@example.com' ) ;
390393 await user2 . signUp ( ) ;
394+ await jasmine . timeout ( ) ;
391395 expect ( user2 . getSessionToken ( ) ) . toBeUndefined ( ) ;
392396 expect ( sendEmailOptions ) . toBeDefined ( ) ;
393397 expect ( verifySpy ) . toHaveBeenCalledTimes ( 5 ) ;
@@ -422,10 +426,47 @@ describe('Email Verification Token Expiration: ', () => {
422426 newUser . set ( 'email' , 'user@example.com' ) ;
423427 await newUser . signUp ( ) ;
424428 await Parse . User . requestEmailVerification ( 'user@example.com' ) ;
429+ await jasmine . timeout ( ) ;
425430 expect ( sendSpy ) . toHaveBeenCalledTimes ( 2 ) ;
426431 expect ( emailSpy ) . toHaveBeenCalledTimes ( 0 ) ;
427432 } ) ;
428433
434+ it ( 'provides full user object in email verification function on email and username change' , async ( ) => {
435+ const emailAdapter = {
436+ sendVerificationEmail : ( ) => { } ,
437+ sendPasswordResetEmail : ( ) => Promise . resolve ( ) ,
438+ sendMail : ( ) => { } ,
439+ } ;
440+ const sendVerificationEmail = {
441+ method ( req ) {
442+ expect ( req . user ) . toBeDefined ( ) ;
443+ expect ( req . user . id ) . toBeDefined ( ) ;
444+ expect ( req . user . get ( 'createdAt' ) ) . toBeDefined ( ) ;
445+ expect ( req . user . get ( 'updatedAt' ) ) . toBeDefined ( ) ;
446+ expect ( req . master ) . toBeDefined ( ) ;
447+ return false ;
448+ } ,
449+ } ;
450+ await reconfigureServer ( {
451+ appName : 'emailVerifyToken' ,
452+ verifyUserEmails : true ,
453+ emailAdapter : emailAdapter ,
454+ emailVerifyTokenValidityDuration : 5 ,
455+ publicServerURL : 'http://localhost:8378/1' ,
456+ sendUserEmailVerification : sendVerificationEmail . method ,
457+ } ) ;
458+ const user = new Parse . User ( ) ;
459+ user . setPassword ( 'password' ) ;
460+ user . setUsername ( 'new@example.com' ) ;
461+ user . setEmail ( 'user@example.com' ) ;
462+ await user . save ( null , { useMasterKey : true } ) ;
463+
464+ // Update email and username
465+ user . setUsername ( 'new@example.com' ) ;
466+ user . setEmail ( 'new@example.com' ) ;
467+ await user . save ( null , { useMasterKey : true } ) ;
468+ } ) ;
469+
429470 it ( 'beforeSave options do not change existing behaviour' , async ( ) => {
430471 let sendEmailOptions ;
431472 const emailAdapter = {
@@ -448,6 +489,7 @@ describe('Email Verification Token Expiration: ', () => {
448489 newUser . setPassword ( 'expiringToken' ) ;
449490 newUser . set ( 'email' , 'user@parse.com' ) ;
450491 await newUser . signUp ( ) ;
492+ await jasmine . timeout ( ) ;
451493 const response = await request ( {
452494 url : sendEmailOptions . link ,
453495 followRedirects : false ,
@@ -490,6 +532,7 @@ describe('Email Verification Token Expiration: ', () => {
490532 user . set ( 'email' , 'user@parse.com' ) ;
491533 return user . signUp ( ) ;
492534 } )
535+ . then ( ( ) => jasmine . timeout ( ) )
493536 . then ( ( ) => {
494537 request ( {
495538 url : sendEmailOptions . link ,
@@ -549,6 +592,7 @@ describe('Email Verification Token Expiration: ', () => {
549592 user . set ( 'email' , 'user@parse.com' ) ;
550593 return user . signUp ( ) ;
551594 } )
595+ . then ( ( ) => jasmine . timeout ( ) )
552596 . then ( ( ) => {
553597 return request ( {
554598 url : sendEmailOptions . link ,
@@ -766,6 +810,9 @@ describe('Email Verification Token Expiration: ', () => {
766810 } )
767811 . then ( response => {
768812 expect ( response . status ) . toBe ( 200 ) ;
813+ } )
814+ . then ( ( ) => jasmine . timeout ( ) )
815+ . then ( ( ) => {
769816 expect ( sendVerificationEmailCallCount ) . toBe ( 2 ) ;
770817 expect ( sendEmailOptions ) . toBeDefined ( ) ;
771818
@@ -917,6 +964,7 @@ describe('Email Verification Token Expiration: ', () => {
917964 'Content-Type' : 'application/json' ,
918965 } ,
919966 } ) ;
967+ await jasmine . timeout ( ) ;
920968 expect ( response . status ) . toBe ( 200 ) ;
921969 expect ( sendVerificationEmailCallCount ) . toBe ( 2 ) ;
922970 expect ( sendEmailOptions ) . toBeDefined ( ) ;
@@ -959,6 +1007,7 @@ describe('Email Verification Token Expiration: ', () => {
9591007 user . set ( 'email' , 'user@parse.com' ) ;
9601008 return user . signUp ( ) ;
9611009 } )
1010+ . then ( ( ) => jasmine . timeout ( ) )
9621011 . then ( ( ) => {
9631012 return request ( {
9641013 url : sendEmailOptions . link ,
@@ -1197,6 +1246,7 @@ describe('Email Verification Token Expiration: ', () => {
11971246 user . set ( 'email' , 'user@parse.com' ) ;
11981247 return user . signUp ( ) ;
11991248 } )
1249+ . then ( ( ) => jasmine . timeout ( ) )
12001250 . then ( ( ) => {
12011251 request ( {
12021252 url : sendEmailOptions . link ,
0 commit comments