public ActionResult ForgotPassword(PasswordResetInfo model) { if (!this.accountRepository.Exists(model.Email)) { this.ModelState.AddModelError(nameof(model.Email), Errors.UserDoesNotExist); return this.View(model); } try { var newPassword = this.accountRepository.RestorePassword(model.Email); this.notificationService.SendPassword(model.Email, newPassword); return this.InfoMessage(InfoMessage.Success(Captions.ResetPasswordSuccess)); } catch (Exception ex) { Log.Error($"Can't reset password for user {model.Email}", ex, this); this.ModelState.AddModelError(nameof(model.Email), ex.Message); return this.View(model); } }
public ActionResult ForgotPassword(PasswordResetInfo model) { if (!this.accountRepository.Exists(model.Email)) { this.ModelState.AddModelError(nameof(model.Email), UserDoesNotExistError); return this.View(model); } try { var newPassword = this.accountRepository.RestorePassword(model.Email); this.notificationService.SendPassword(model.Email, newPassword); return this.InfoMessage(InfoMessage.Success(DictionaryPhraseRepository.Current.Get("/Accounts/Forgot Password/Reset Password Success", "Your password has been reset."))); } catch (Exception ex) { Log.Error($"Can't reset password for user {model.Email}", ex, this); this.ModelState.AddModelError(nameof(model.Email), ex.Message); return this.View(model); } }
public void ForgotPasswordShouldReturnModelIfUserNotExist(PasswordResetInfo model, [Frozen] IAccountRepository repo) { var fakeSite = new FakeSiteContext(new StringDictionary { { "displayMode", "normal" } }) as SiteContext; using (new SiteContextSwitcher(fakeSite)) { repo.RestorePassword(Arg.Any<string>()).Returns("new password"); repo.Exists(Arg.Any<string>()).Returns(false); var controller = new AccountsController(repo, null, null, null, null); var result = controller.ForgotPassword(model); result.Should().BeOfType<ViewResult>().Which.Model.Should().Be(model); result.Should().BeOfType<ViewResult>().Which.ViewData.ModelState.Should().ContainKey(nameof(model.Email)) .WhichValue.Errors.Should().Contain(x => x.ErrorMessage == AccountsController.UserDoesNotExistError); } }
public void ForgotPasswordShoudCatchAndReturnViewWithError(PasswordResetInfo model, [Frozen] IAccountRepository repo, INotificationService notificationService, IAccountsSettingsService settingService) { var fakeSite = new FakeSiteContext(new StringDictionary { { "displayMode", "normal" } }) as SiteContext; using (new SiteContextSwitcher(fakeSite)) { repo.RestorePassword(Arg.Any<string>()).ThrowsForAnyArgs(new Exception("Error")); repo.Exists(Arg.Any<string>()).Returns(true); var controller = new AccountsController(repo, notificationService, settingService, null, null); var result = controller.ForgotPassword(model); result.Should().BeOfType<ViewResult>().Which.Model.Should().Be(model); result.Should().BeOfType<ViewResult>().Which.ViewData.ModelState.Should().ContainKey(nameof(model.Email)) .WhichValue.Errors.Should().Contain(x => x.ErrorMessage == "Error"); } }
public void ForgotPasswordShouldReturnSuccessView([Frozen] IAccountRepository repo, INotificationService ns, PasswordResetInfo model, IAccountsSettingsService accountSetting, InfoMessage info) { var fakeSite = new FakeSiteContext(new StringDictionary { { "displayMode", "normal" } }) as SiteContext; using (new SiteContextSwitcher(fakeSite)) { var controller = new AccountsController(repo, ns, accountSetting, null, null); repo.RestorePassword(Arg.Any<string>()).Returns("new password"); repo.Exists(Arg.Any<string>()).Returns(true); var result = controller.ForgotPassword(model); result.Should().BeOfType<ViewResult>().Which.ViewName.Should().Be(ViewPath.InfoMessage); } }
public void ForgotPasswordShouldReturnModelIfItsNotValid(PasswordResetInfo model, [Frozen] IAccountRepository repo, [NoAutoProperties] AccountsController controller) { var fakeSite = new FakeSiteContext(new StringDictionary { { "displayMode", "normal" } }) as SiteContext; using (new SiteContextSwitcher(fakeSite)) { repo.RestorePassword(Arg.Any<string>()).Returns("new password"); repo.Exists(Arg.Any<string>()).Returns(true); controller.ModelState.AddModelError("Error", "Error"); var result = controller.ForgotPassword(model); result.Should().BeOfType<ViewResult>().Which.Model.Should().Be(model); } }