public async Task <IActionResult> SendPasswordResetEmail([FromBody] SendPasswordResetEmailDto dto) { try { if (!ModelState.IsValid) { return(BadRequest()); } var user = await _userManager.FindByEmailAsync(dto.Email); if (user == null) { return(BadRequest()); } await SendPasswordResetEmaiAsync(user); return(Ok()); } catch (Exception ex) { _logger.LogError("Threw exception while sending password reset code for user: {@ex}", ex); return(new StatusCodeResult(500)); } }
public async Task SendPasswordResetEmail_WhenInvalidEmail_ReturnsBadRequest() { // Arrange string email = "*****@*****.**"; string code = "0"; var dto = new SendPasswordResetEmailDto() { Email = email }; _mockUserManager .Setup(m => m.FindByEmailAsync(It.IsAny <string>())) .ReturnsAsync(null as ApplicationUser); // Act var result = await _sut.SendPasswordResetEmail(dto); // Assert _mockUserManager.Verify(m => m.GeneratePasswordResetTokenAsync(_user), Times.Never); _mockEmailSender.Verify(s => s.SendEmailAsync(It.IsAny <string>() , It.IsAny <string>() , It.Is <string>(m => m.Contains(code))), Times.Never); Assert.IsAssignableFrom <BadRequestResult>(result); }
public async Task SendPasswordResetEmail_WhenCalledWithValidArgs_GeneratesTokenAndCallsEmailSenderWithToken() { // Arrange string email = "*****@*****.**"; string code = "0"; var dto = new SendPasswordResetEmailDto() { Email = email }; _mockUserManager .Setup(m => m.FindByEmailAsync(It.IsAny <string>())) .ReturnsAsync(_user); _mockUserManager .Setup(m => m.GeneratePasswordResetTokenAsync(It.IsAny <ApplicationUser>())) .ReturnsAsync(code); // Act var result = await _sut.SendPasswordResetEmail(dto); // Assert _mockUserManager.Verify(m => m.GeneratePasswordResetTokenAsync(_user)); _mockEmailSender.Verify(s => s.SendEmailAsync(It.IsAny <string>() , It.IsAny <string>() , It.Is <string>(m => m.Contains(code)))); Assert.IsAssignableFrom <OkResult>(result); }
public Task <HttpResponseMessage> SendPasswordResetEmailAsync(SendPasswordResetEmailDto dto) { return(_httpService.PostAsync($"Auth/SendPasswordResetEmail", dto)); }