public void SendForgotPasswordMailShouldCreatePasswordTokenAndSendConfirmationMail() { //Arrange var model = new ForgotPasswordModelBuilder().WithValidEmail().Build(); var existingUser = new User { Email = model.Email, EmailConfirmed = true }; _userManagerMock.Setup(manager => manager.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(existingUser); var resetPasswordToken = Guid.NewGuid().ToString(); _userManagerMock.Setup(manager => manager.GeneratePasswordResetTokenAsync(It.IsAny <User>())) .ReturnsAsync(resetPasswordToken); //Act var result = _controller.SendForgotPasswordMail(model).Result as OkResult; //Assert Assert.That(result, Is.Not.Null); _userManagerMock.Verify(manager => manager.FindByEmailAsync(model.Email), Times.Once); _mailSenderMock.Verify(sender => sender.SendForgotPasswordMessageAsync(existingUser, resetPasswordToken), Times.Once); }
public void SendForgotPasswordMailShouldReturnOkResultIfUserCannotBeFound() { //Arrange var model = new ForgotPasswordModelBuilder().Build(); _userManagerMock.Setup(manager => manager.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(() => null); //Act var result = _controller.SendForgotPasswordMail(model).Result as OkResult; //Assert Assert.That(result, Is.Not.Null); _userManagerMock.Verify(manager => manager.FindByEmailAsync(model.Email), Times.Once); _mailSenderMock.Verify(sender => sender.SendForgotPasswordMessageAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Never); }
public void SendForgotPasswordMailShouldReturnBadRequestIfCaptchaIsInvalid() { //Arrange var model = new ForgotPasswordModelBuilder().WithValidEmail().Build(); var expectedCaptchaResult = new CaptchaVerificationResult { Success = false }; _captchaValidatorMock.Setup(validator => validator.Validate(It.IsAny <string>(), It.IsAny <IPAddress>())) .ReturnsAsync(expectedCaptchaResult); //Act var result = _controller.SendForgotPasswordMail(model).Result as BadRequestObjectResult; //Assert Assert.That(result, Is.Not.Null); _captchaValidatorMock.Verify(validator => validator.Validate(model.CaptchaToken, _controller.HttpContext.Connection.RemoteIpAddress)); _userManagerMock.Verify(manager => manager.FindByEmailAsync(It.IsAny <string>()), Times.Never); _mailSenderMock.Verify(sender => sender.SendConfirmUserEmailMessageAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Never); }
public void SendForgotPasswordMailShouldReturnBadRequestIfModelIsInvalid() { //Arrange var model = new ForgotPasswordModelBuilder().Build(); var errorKey = "someValidationError"; _controller.ModelState.AddModelError(errorKey, Guid.NewGuid().ToString()); //Act var result = _controller.SendForgotPasswordMail(model).Result as BadRequestObjectResult; //Assert Assert.That(result, Is.Not.Null); var serializableError = result.Value as SerializableError; Assert.That(serializableError, Is.Not.Null); Assert.That(serializableError.Keys, Has.One.EqualTo(errorKey)); _userManagerMock.Verify(manager => manager.FindByEmailAsync(It.IsAny <string>()), Times.Never); _mailSenderMock.Verify(sender => sender.SendForgotPasswordMessageAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Never); }