public void ResetPassword_Fails() { // Arrange var passwordForResetDto = new PasswordForResetDto() { Token = "randomtoken", Email = "*****@*****.**", Password = "******" }; var user = new User() { UserName = "******", Id = 1 }; _repoMock.Setup(x => x.GetUser(passwordForResetDto.Email)).ReturnsAsync(user); _mockUserManager.Setup(x => x.ResetPasswordAsync(user, It.IsAny <string>(), passwordForResetDto.Password)).Returns(Task.FromResult(IdentityResult.Failed())).Verifiable(); // Act var result = _emailService.ResetPasswordAsync(passwordForResetDto).Result; // Assert var okResult = Assert.IsType <UserManagerResponse>(result); Assert.False(okResult.IsSuccess); Assert.Equal("Something went wrong", okResult.Message); }
public async Task <IActionResult> ResetPasswordWhileLoggedIn(PasswordForResetDto passwordForReset) { string userId = User.FindFirst(ClaimTypes.NameIdentifier).Value; var user = await _userManager.FindByIdAsync(userId); if (passwordForReset.Password != passwordForReset.ConfirmPassword) { return(BadRequest("Passwords must be the same")); } if (await _userManager.CheckPasswordAsync(user, passwordForReset.OldPassword) == false) { return(BadRequest("Old password does not match")); } var token = await _userManager.GeneratePasswordResetTokenAsync(user); var result = await _userManager.ResetPasswordAsync(user, token, passwordForReset.Password); if (result.Succeeded) { _logger.LogInfo(user.Id, $"Passwor has been changed for user: {user.UserName}"); return(Ok(new { message = "Password has been changed" })); } _logger.LogWarning(user.Id, $"Error occured during passoword reset for user: {user.UserName}"); return(BadRequest("Something went wrong")); }
public void ResetPassword_Success_ReturnsOk() { var userId = 2; var passwordForResetDto = new PasswordForResetDto { Token = It.IsAny <string>(), Email = "*****@*****.**", Password = "******", }; var response = new UserManagerResponse { IsSuccess = true, Message = "Password reset was successful" }; var userFromRepo = FakeUsers().SingleOrDefault(x => x.Id == userId); _mockEmailService.Setup(x => x.ResetPasswordAsync(passwordForResetDto)).ReturnsAsync(response); _recipeRepoMock.Setup(x => x.GetUser(passwordForResetDto.Email)).ReturnsAsync(userFromRepo); var result = _authController.ResetPassword(passwordForResetDto).Result; var okResult = Assert.IsType <OkObjectResult>(result); // Assert.Equal(response, okResult.Value); }
public async Task <IActionResult> ResetPassword(PasswordForResetDto passwordForResetDto) { var result = await _emailService.ResetPasswordAsync(passwordForResetDto); var user = await _recipeRepo.GetUser(passwordForResetDto.Email); if (result.IsSuccess) { return(Ok(new { token = GenerateJwtToken(user) })); } return(BadRequest(result)); }
public async Task <IActionResult> ResetPassword(PasswordForResetDto passwordForReset) { if (passwordForReset.Password != passwordForReset.ConfirmPassword) { return(BadRequest("Passwords must be the same")); } var user = await _userManager.FindByNameAsync(passwordForReset.UserName); var result = await _userManager.ResetPasswordAsync(user, passwordForReset.Token, passwordForReset.Password); if (result.Succeeded) { _logger.LogInfo(user.Id, $"Passwor has been changed for user: {user.UserName}"); return(Ok(new { message = "Password has been changed" })); } _logger.LogWarning(user.Id, $"Password reset failed for user {user.UserName}"); return(BadRequest("Reset password failed")); }
public void ResetPassword_User_Null() { // Arrange var passwordForResetDto = new PasswordForResetDto() { Token = "randomtoken", Email = "*****@*****.**", Password = "******" }; // Act var result = _emailService.ResetPasswordAsync(passwordForResetDto).Result; // Assert var okResult = Assert.IsType <UserManagerResponse>(result); Assert.False(okResult.IsSuccess); Assert.Equal("No user associated with this email", okResult.Message); }
public void ResetPassWord_Fails_ReturnsBadRequest() { var passwordForResetDto = new PasswordForResetDto { Token = It.IsAny <string>(), Email = "*****@*****.**", Password = "******", }; var response = new UserManagerResponse { IsSuccess = false, Message = "Password reset failed" }; _mockEmailService.Setup(x => x.ResetPasswordAsync(passwordForResetDto)).ReturnsAsync(response); var result = _authController.ResetPassword(passwordForResetDto).Result; var okResult = Assert.IsType <BadRequestObjectResult>(result); Assert.Equal(response, okResult.Value); }
public async Task <UserManagerResponse> ResetPasswordAsync(PasswordForResetDto passwordForResetDto) { var user = await _recipeRepo.GetUser(passwordForResetDto.Email); if (user == null) { return new UserManagerResponse { IsSuccess = false, Message = "No user associated with this email" } } ; var decodedToken = WebEncoders.Base64UrlDecode(passwordForResetDto.Token); string normalToken = Encoding.UTF8.GetString(decodedToken); var result = await _userManager.ResetPasswordAsync(user, normalToken, passwordForResetDto.Password); if (result.Succeeded) { return new UserManagerResponse { IsSuccess = true, Message = "Password has been reset successfully" } } ; return(new UserManagerResponse { IsSuccess = false, Message = "Something went wrong", Errors = result.Errors.Select(e => e.Description) }); }