From f2e21b0538e7f4092cc15fae1760795565a50ac5 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 1 Feb 2018 19:39:57 -0300 Subject: [PATCH] Additional test for emailVerified set to false on email changed from existing (#4532) * Create a test to check the issue #4501 * Check if after the user confirms the email and change the email again a new verification email is sent * Change the spec text to requested in PR --- spec/EmailVerificationToken.spec.js | 59 +++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/spec/EmailVerificationToken.spec.js b/spec/EmailVerificationToken.spec.js index 7f8c9823..3509efd3 100644 --- a/spec/EmailVerificationToken.spec.js +++ b/spec/EmailVerificationToken.spec.js @@ -777,4 +777,63 @@ describe("Email Verification Token Expiration: ", () => { }); }); + it('emailVerified should be set to false after changing from an already verified email', done => { + var user = new Parse.User(); + var sendEmailOptions; + var emailAdapter = { + sendVerificationEmail: options => { + sendEmailOptions = options; + }, + sendPasswordResetEmail: () => Promise.resolve(), + sendMail: () => { } + } + reconfigureServer({ + appName: 'emailVerifyToken', + verifyUserEmails: true, + emailAdapter: emailAdapter, + emailVerifyTokenValidityDuration: 5, // 5 seconds + publicServerURL: "http://localhost:8378/1" + }) + .then(() => { + user.setUsername("testEmailVerifyTokenValidity"); + user.setPassword("expiringToken"); + user.set('email', 'user@parse.com'); + return user.signUp(); + }).then(() => { + request.get(sendEmailOptions.link, { + followRedirect: false, + }, (error, response) => { + expect(response.statusCode).toEqual(302); + Parse.User.logIn("testEmailVerifyTokenValidity", "expiringToken") + .then(user => { + expect(typeof user).toBe('object'); + expect(user.get('emailVerified')).toBe(true); + + user.set('email', 'newEmail@parse.com'); + return user.save(); + }) + .then(() => user.fetch()) + .then(user => { + expect(typeof user).toBe('object'); + expect(user.get('email')).toBe('newEmail@parse.com'); + expect(user.get('emailVerified')).toBe(false); + + request.get(sendEmailOptions.link, { + followRedirect: false, + }, (error, response) => { + expect(response.statusCode).toEqual(302); + done(); + }); + }) + .catch((error) => { + jfail(error); + done(); + }); + }); + }).catch((error) => { + jfail(error); + done(); + }); + }); + })