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..0f7f3431 100644 --- a/tests/Parse/ParseUserTest.php +++ b/tests/Parse/ParseUserTest.php @@ -718,4 +718,57 @@ public function testGetCurrentUserByIdAndSession() ParseUser::logOut(); } + + /** + * @group verification-email + */ + public function testRequestVerificationEmail() + { + $email = 'example@example.com'; + $user = new ParseUser(); + $user->setUsername('verification_email_user'); + $user->setPassword('password'); + $user->setEmail($email); + $user->signUp(); + 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); + } + + /** + * @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'); + } }