public async Task AccountForgotPasswordPostOkDataResetSent() { this.userManagerMock.Setup(mock => mock.IsEmailConfirmedAsyncWrap(It.IsAny<int>())).Returns(Task.FromResult(true)); this.accountController.UserManager = this.userManagerMock.Object; var model = new ForgotPasswordViewModel { EmailAddress = "*****@*****.**" }; var result = await this.accountController.ForgotPassword(model); result.Should().BeViewResult().WithViewName("~/Features/Account/ForgotPasswordConfirmation.cshtml"); this.userManagerMock.Verify(m => m.GeneratePasswordResetTokenAsyncWrap(It.IsAny<int>()), Times.Once); }
public async Task AccountForgotPasswordPostWrongEmailStillReturnsPage() { this.userManagerMock.Setup(mock => mock.IsEmailConfirmedAsyncWrap(It.IsAny<int>())).Returns(Task.FromResult(true)); // really should not be this, but to test IF in code.... this.userManagerMock.Setup(mock => mock.FindByNameAsyncWrap(It.IsAny<string>())).Returns(Task.FromResult<WebUser>(null)); this.accountController.UserManager = this.userManagerMock.Object; var model = new ForgotPasswordViewModel { EmailAddress = "*****@*****.**" }; var result = await this.accountController.ForgotPassword(model); result.Should().BeViewResult().WithViewName("~/Features/Account/ForgotPasswordConfirmation.cshtml"); this.userManagerMock.Verify(m => m.GeneratePasswordResetTokenAsyncWrap(It.IsAny<int>()), Times.Never); }
public async Task AccountForgotPasswordPostUnconfirmedEmailStillReturnsPage() { this.userManagerMock.Setup(mock => mock.IsEmailConfirmedAsyncWrap(It.IsAny<int>())).Returns(Task.FromResult(false)); this.accountController.UserManager = this.userManagerMock.Object; var model = new ForgotPasswordViewModel { EmailAddress = "*****@*****.**" }; var result = await this.accountController.ForgotPassword(model); result.Should().BeViewResult().WithViewName("~/Features/Account/ForgotPasswordConfirmation.cshtml"); this.userManagerMock.Verify(m => m.GeneratePasswordResetTokenAsyncWrap(It.IsAny<int>()), Times.Never); }
public virtual async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (!this.ModelState.IsValid) { return this.View(MVC.Account.Views.ForgotPassword, model); } var user = await this.UserManager.FindByNameAsyncWrap(model.EmailAddress); if (user == null || !(await this.UserManager.IsEmailConfirmedAsyncWrap(user.Id))) { // Don't reveal that the user does not exist or is not confirmed - all are "OK-ish" and "we sent link..." return this.View(MVC.Account.Views.ForgotPasswordConfirmation); } var code = await this.UserManager.GeneratePasswordResetTokenAsyncWrap(user.Id); var callbackUrl = this.Url.Action(MVC.Account.ActionNames.ResetPassword, MVC.Account.Name, new { userId = user.Id, code = code }, protocol: this.Request.Url.Scheme); await this.UserManager.SendEmailAsyncWrap(user.Id, "Finnish Immigration eService Reset Password request", "Please reset your password by clicking here: <a href=\"" + callbackUrl + "\">link</a>"); this.ViewBag.Link = callbackUrl; return this.View(MVC.Account.Views.ForgotPasswordConfirmation); }