From 0a232ddb7b4f410dd97faaf077c1faaf078f8ce4 Mon Sep 17 00:00:00 2001 From: Benjamin Friedman Date: Tue, 7 Nov 2017 11:37:10 -0800 Subject: [PATCH 1/2] adds the ability to request that verification emails be sent --- src/Parse/ParseUser.php | 16 ++++++++++++++++ tests/Parse/ParseUserTest.php | 31 +++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/Parse/ParseUser.php b/src/Parse/ParseUser.php index 7b7d4c36..f3fcf7c9 100644 --- a/src/Parse/ParseUser.php +++ b/src/Parse/ParseUser.php @@ -607,6 +607,22 @@ public static function requestPasswordReset($email) ParseClient::_request('POST', 'requestPasswordReset', null, $json); } + /** + * Request a verification email to be sent to the specified email address + * + * @param string $email Email to request a verification for + */ + public static function requestVerificationEmail($email) + { + $json = json_encode(['email' => $email]); + ParseClient::_request( + 'POST', + 'verificationEmailRequest', + null, + $json + ); + } + /** * Sets the current user to null. Used internally for testing purposes. */ diff --git a/tests/Parse/ParseUserTest.php b/tests/Parse/ParseUserTest.php index c266b094..d30d679e 100644 --- a/tests/Parse/ParseUserTest.php +++ b/tests/Parse/ParseUserTest.php @@ -718,4 +718,35 @@ public function testGetCurrentUserByIdAndSession() ParseUser::logOut(); } + + /** + * @group verification-email + */ + public function testRequestVerificationEmail() + { + $user = new ParseUser(); + $user->setUsername('verification_email_user'); + $user->setPassword('password'); + $user->setEmail('example@example.com'); + $user->signUp(); + ParseUser::requestVerificationEmail('example@example.com'); + } + + /** + * @group verification-email + */ + public function testRequestVerificationEmailEmpty() + { + $this->setExpectedException('Parse\ParseException', 'you must provide an email'); + ParseUser::requestVerificationEmail(''); + } + + /** + * @group verification-email + */ + public function testRequestVerificationEmailBad() + { + $this->setExpectedException('Parse\ParseException', 'No user found with email not_a_known_email'); + ParseUser::requestVerificationEmail('not_a_known_email'); + } } From 19d76da002e3fb35dcd4a06cb1f8727c74618698 Mon Sep 17 00:00:00 2001 From: Benjamin Friedman Date: Tue, 7 Nov 2017 11:53:29 -0800 Subject: [PATCH 2/2] Added test for already verified email --- tests/Parse/ParseUserTest.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/Parse/ParseUserTest.php b/tests/Parse/ParseUserTest.php index d30d679e..0f7f3431 100644 --- a/tests/Parse/ParseUserTest.php +++ b/tests/Parse/ParseUserTest.php @@ -724,12 +724,34 @@ public function testGetCurrentUserByIdAndSession() */ public function testRequestVerificationEmail() { + $email = 'example@example.com'; $user = new ParseUser(); $user->setUsername('verification_email_user'); $user->setPassword('password'); - $user->setEmail('example@example.com'); + $user->setEmail($email); $user->signUp(); - ParseUser::requestVerificationEmail('example@example.com'); + ParseUser::requestVerificationEmail($email); + } + + /** + * @group verification-email + */ + public function testEmailAlreadyVerified() + { + $email = 'example2@example.com'; + $this->setExpectedException('Parse\ParseException', "Email {$email} is already verified."); + + $user = new ParseUser(); + $user->setUsername('another_verification_email_user'); + $user->setPassword('password'); + $user->setEmail($email); + $user->signUp(); + + // forcibly update emailVerification status + $user->set('emailVerified', true); + $user->save(true); + + ParseUser::requestVerificationEmail($email); } /**