public async Task Given_A_Valid_ResetPassword_Credentials_If_ResetPassword_Fails_Should_Return_BadRequestResult() { // Arrange const string expected = "Reset password code expired."; var resetPasswordViewModel = new ResetPasswordViewModel { Email = "*****@*****.**", Password = "******" }; var resetPasswordQueryParameters = new ResetPasswordQueryParameters(); _userManager.FindByEmailAsync(Arg.Any <string>()).Returns(new ApplicationUser()); _userManager.ResetPasswordAsync(Arg.Any <ApplicationUser>(), Arg.Any <string>(), Arg.Any <string>()).Returns(IdentityResult.Failed(new IdentityError { Description = "Reset password code expired." })); // Act var result = await _sut.ResetPassword(resetPasswordViewModel, resetPasswordQueryParameters) as BadRequestObjectResult; // Assert result.Should().BeOfType <BadRequestObjectResult>(); var errors = result?.Value as IEnumerable <string>; errors.Should().ContainSingle(expected); }
public async Task Given_An_Invalid_ModelState_Should_Return_BadRequestResult() { // Arrange var resetPasswordViewModel = new ResetPasswordViewModel(); var resetPasswordQueryParameters = new ResetPasswordQueryParameters(); _sut.ModelState.AddModelError("Email", "Email is required"); // Act var result = await _sut.ResetPassword(resetPasswordViewModel, resetPasswordQueryParameters); // Assert result.Should().BeOfType <BadRequestObjectResult>(); }
public async Task Given_A_Valid_Email_If_User_Does_Not_Exist_Should_Return_OkResult() { // Arrange var resetPasswordViewModel = new ResetPasswordViewModel { Email = "*****@*****.**", }; var resetPasswordQueryParameters = new ResetPasswordQueryParameters(); _userManager.FindByEmailAsync(Arg.Any <string>()).Returns((ApplicationUser)null); // Act var result = await _sut.ResetPassword(resetPasswordViewModel, resetPasswordQueryParameters) as OkResult; // Assert result.Should().BeOfType <OkResult>(); }
public async Task Given_An_Invalid_ModelState_Should_Return_BadRequestResult_With_Errors() { // Arrange const string expected = "Email is required"; var resetPasswordViewModel = new ResetPasswordViewModel(); var resetPasswordQueryParameters = new ResetPasswordQueryParameters(); _sut.ModelState.AddModelError("Email", "Email is required"); // Act var result = await _sut.ResetPassword(resetPasswordViewModel, resetPasswordQueryParameters) as BadRequestObjectResult; // Assert result.Should().BeOfType <BadRequestObjectResult>(); var errors = result?.Value as IEnumerable <string>; errors.Should().ContainSingle(expected); }
public async Task Given_A_Valid_ResetPassword_Credentials_If_ResetPassword_Succeeds_Should_Invoke_ResetPasswordAsync_Once() { // Arrange var resetPasswordViewModel = new ResetPasswordViewModel { Email = "*****@*****.**", Password = "******" }; var resetPasswordQueryParameters = new ResetPasswordQueryParameters(); _userManager.FindByEmailAsync(Arg.Any <string>()).Returns(new ApplicationUser()); _userManager.ResetPasswordAsync(Arg.Any <ApplicationUser>(), Arg.Any <string>(), Arg.Any <string>()).Returns(IdentityResult.Success); // Act await _sut.ResetPassword(resetPasswordViewModel, resetPasswordQueryParameters); // Assert await _userManager.Received(1).ResetPasswordAsync(Arg.Any <ApplicationUser>(), Arg.Any <string>(), Arg.Any <string>()); }
public async Task <IActionResult> ResetPassword([FromBody] ResetPasswordViewModel model, [FromQuery] ResetPasswordQueryParameters queryParameters) { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(model.Email); if (user == null) { return(Ok()); } var result = await _userManager.ResetPasswordAsync(user, WebUtility.UrlDecode(queryParameters.Code), model.Password); if (result.Succeeded) { return(Ok()); } return(BadRequest(result.Errors.Descriptions())); } return(BadRequest(ModelState.Errors())); }