public void ResetPasswordShouldReturnBadRequestWhenGenerateAndSendIsFailed() { const string code = "token"; const string password = "******"; Guid userId = Guid.NewGuid(); var request = new ResetPasswordRequest { Code = code, Password = password, UserId = userId }; var user = new User(); var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.BadRequest); _mock.Mock <IUserManager>() .Setup(manager => manager.FindByIdAsync(userId)) .ReturnsAsync(user); _mock.Mock <IUserManager>() .Setup(manager => manager.ResetPasswordAsync(user, code, password)) .ReturnsAsync(IdentityResult.Failed()); var controller = _mock.Create <AuthController>(); var expected = new BadRequestException("TOKEN_IS_INVALID"); ExceptionAssert.ThrowsAsync(expected, () => controller.ResetPassword(request)); }
public void ShouldThrowCanNotSendEmailException() { var user = new User() { Id = Guid.NewGuid(), Email = "*****@*****.**" }; var link = "link"; var clientUrl = "url"; var subject = "subject"; var body = "body"; var token = "token"; var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.BadRequest); _mock.Mock <IClientUriService>() .Setup(x => x.BuildUri(clientUrl, new NameValueCollection() { { "userId", user.Id.ToString() }, { "code", token }, })) .Returns(link); _mock.Mock <IEmailService>() .Setup(x => x.SendAsync(It.Is <SendSingleEmailRequest>(request => request.Email == user.Email && request.Subject == subject && request.Content == body))) .ReturnsAsync(response); var expected = new CanNotSendEmailException(response.StatusCode.ToString()); ExceptionAssert.ThrowsAsync(expected, () => _service.GenerateAndSendTokenAsync(user, token, clientUrl, subject, body)); }
public async Task ForgotPasswordShouldReturnBadRequestWhenUserIsNotFound() { const string email = "[email protected]"; const string validationToken = "validation token"; var request = new ForgotPasswordRequest { Email = email, ValidationToken = validationToken }; var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.Accepted); _mock.Mock <IUserManager>() .Setup(manager => manager.FindByEmailAsync(email)) .ReturnsAsync(null as User); _mock.Mock <ICaptchaValidationService>() .Setup(provider => provider.IsValidAsync(validationToken)) .ReturnsAsync(true); var controller = _mock.Create <AuthController>(); var actual = await controller.ForgotPassword(request); var expected = new BadRequestObjectResult("USER_NOT_FOUND"); ContentAssert.AreEqual(expected, actual); }
public async Task ShouldGenerateAndSendPasswordResetToken() { var user = new User() { Id = Guid.NewGuid(), Email = "*****@*****.**" }; var link = "link"; var clientUrl = "url"; var subject = "subject"; var body = "body"; var token = "token"; var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.Accepted); _mock.Mock <IClientUriService>() .Setup(x => x.BuildUri(clientUrl, new NameValueCollection() { { "userId", user.Id.ToString() }, { "code", token }, })) .Returns(link); _mock.Mock <IEmailService>() .Setup(x => x.SendAsync(It.Is <SendSingleEmailRequest>(request => request.Email == user.Email && request.Subject == subject && request.Content == body))) .ReturnsAsync(response); await _service.GenerateAndSendTokenAsync(user, token, clientUrl, subject, body); _mock.Mock <IEmailService>() .Verify(x => x.SendAsync(It.Is <SendSingleEmailRequest>(request => request.Email == user.Email && request.Subject == subject && request.Content == body))); }
public async Task ResetPasswordShouldReturnOkResultWhenAllIsCorrect() { const string code = "token"; const string password = "******"; const string token = "token"; const string email = "[email protected]"; Guid userId = Guid.NewGuid(); var roles = new List <string> { UserRoles.Employee.Name, UserRoles.CompanyAdministrator.Name, }; var request = new ResetPasswordRequest { Code = code, Password = password, UserId = userId }; var user = new User() { Id = userId, Email = email, }; var userDTO = new UserDTO { Email = email, Roles = roles, }; var response = SendGridHelper.GetEmptyResponse(System.Net.HttpStatusCode.Accepted); var expected = new SignInResponse { Token = token, User = new UserDTO { Email = email, Roles = roles, } }; _mock.Mock <IUserManager>() .Setup(manager => manager.FindByIdAsync(userId)) .ReturnsAsync(user); _mock.Mock <IUserManager>() .Setup(manager => manager.ResetPasswordAsync(user, code, password)) .ReturnsAsync(IdentityResult.Success); _mock.Mock <ISignInResponseProvider>() .Setup(provider => provider.Get(user, false)) .Returns(expected); var controller = _mock.Create <AuthController>(); var actual = await controller.ResetPassword(request); ContentAssert.AreEqual(expected, actual); }