public void CreateTokenShoudReturnBadRequestAndSendConfirmationMailWhenEmailIsNotConfirmed() { //Arrange var model = new LoginModelBuilder().Build(); var existingUser = new User { EmailConfirmed = false }; _userManagerMock.Setup(manager => manager.FindByNameAsync(It.IsAny <string>())).ReturnsAsync(existingUser); var confirmationToken = Guid.NewGuid().ToString(); _userManagerMock.Setup(manager => manager.GenerateEmailConfirmationTokenAsync(It.IsAny <User>())) .ReturnsAsync(confirmationToken); _passwordHasherMock .Setup(hasher => hasher.VerifyHashedPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(PasswordVerificationResult.Success); //Act var result = _controller.CreateToken(model).Result as BadRequestObjectResult; //Assert Assert.That(result, Is.Not.Null); var serializableError = result.Value as SerializableError; Assert.That(serializableError, Is.Not.Null); Assert.That(serializableError.Keys, Has.One.EqualTo("EmailNotConfirmed")); _userManagerMock.Verify(manager => manager.FindByNameAsync(model.Email), Times.Once); _passwordHasherMock.Verify(hasher => hasher.VerifyHashedPassword(existingUser, existingUser.PasswordHash, model.Password), Times.Once); _mailSenderMock.Verify(sender => sender.SendConfirmUserEmailMessageAsync(existingUser, confirmationToken), Times.Once); }
public void CreateTokenShoudReturnUnAuthorizedIfPasswordsDontMatch() { //Arrange var model = new LoginModelBuilder().Build(); var existingUser = new User { PasswordHash = Guid.NewGuid().ToString() }; _userManagerMock.Setup(manager => manager.FindByNameAsync(It.IsAny <string>())).ReturnsAsync(existingUser); _passwordHasherMock .Setup(hasher => hasher.VerifyHashedPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(PasswordVerificationResult.Failed); //Act var result = _controller.CreateToken(model).Result as UnauthorizedResult; //Assert Assert.That(result, Is.Not.Null); _userManagerMock.Verify(manager => manager.FindByNameAsync(model.Email), Times.Once); _passwordHasherMock.Verify(hasher => hasher.VerifyHashedPassword(existingUser, existingUser.PasswordHash, model.Password), Times.Once); _mailSenderMock.Verify(sender => sender.SendConfirmUserEmailMessageAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Never); }
public void CreateToken_ShoudReturnOkResultWithTokenIfCredentialsAreCorrect() { //Arrange var model = new LoginModelBuilder().Build(); var existingUser = new User { EmailConfirmed = true }; _userManagerMock.Setup(manager => manager.FindByNameAsync(It.IsAny <string>())).ReturnsAsync(existingUser); var confirmationToken = Guid.NewGuid().ToString(); _userManagerMock.Setup(manager => manager.GenerateEmailConfirmationTokenAsync(It.IsAny <User>())) .ReturnsAsync(confirmationToken); _passwordHasherMock .Setup(hasher => hasher.VerifyHashedPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(PasswordVerificationResult.Success); var createdAccesPass = new TokenAccessPass { Token = Guid.NewGuid().ToString() }; _accessPassFactoryMock .Setup(factory => factory.Create(It.IsAny <User>(), It.IsAny <IList <Claim> >(), It.IsAny <IList <string> >())) .Returns(createdAccesPass); var existingClaims = new List <Claim>(); _userManagerMock.Setup(manager => manager.GetClaimsAsync(It.IsAny <User>())).ReturnsAsync(existingClaims); var existingRoles = new List <string>(); _userManagerMock.Setup(manager => manager.GetRolesAsync(It.IsAny <User>())).ReturnsAsync(existingRoles); //Act var result = _controller.CreateToken(model).Result as OkObjectResult; //Assert Assert.That(result, Is.Not.Null); _userManagerMock.Verify(manager => manager.FindByNameAsync(model.Email), Times.Once); _passwordHasherMock.Verify(hasher => hasher.VerifyHashedPassword(existingUser, existingUser.PasswordHash, model.Password), Times.Once); _mailSenderMock.Verify(sender => sender.SendConfirmUserEmailMessageAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Never); _userManagerMock.Verify(manager => manager.GetClaimsAsync(existingUser), Times.Once); _accessPassFactoryMock.Verify(factory => factory.Create(existingUser, existingClaims, existingRoles), Times.Once); _loginSessionServiceMock.Verify( service => service.SetLoginTokenForSessionAsync(It.IsAny <string>(), It.IsAny <string>()), Times.Never); Assert.That(result.Value, Is.SameAs(createdAccesPass)); }
public void CreateTokenShoudReturnUnAuthorizedIfUserIsNotFound() { //Arrange var model = new LoginModelBuilder().Build(); _userManagerMock.Setup(manager => manager.FindByNameAsync(It.IsAny <string>())).ReturnsAsync(() => null); //Act var result = _controller.CreateToken(model).Result as UnauthorizedResult; //Assert Assert.That(result, Is.Not.Null); _userManagerMock.Verify(manager => manager.FindByNameAsync(model.Email), Times.Once); _mailSenderMock.Verify(sender => sender.SendConfirmUserEmailMessageAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Never); _passwordHasherMock.Verify(hasher => hasher.VerifyHashedPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); }
public void CreateTokenShoudReturnBadRequestIfModelIsInvalid() { //Arrange var model = new LoginModelBuilder().Build(); var errorKey = "someValidationError"; _controller.ModelState.AddModelError(errorKey, Guid.NewGuid().ToString()); //Act var result = _controller.CreateToken(model).Result as BadRequestObjectResult; //Assert Assert.That(result, Is.Not.Null); var serializableError = result.Value as SerializableError; Assert.That(serializableError, Is.Not.Null); Assert.That(serializableError.Keys, Has.One.EqualTo(errorKey)); _userManagerMock.Verify(manager => manager.FindByNameAsync(It.IsAny <string>()), Times.Never); _mailSenderMock.Verify(sender => sender.SendConfirmUserEmailMessageAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Never); _passwordHasherMock.Verify(hasher => hasher.VerifyHashedPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>()), Times.Never); }
public void CreateToken_ShoudSaveTokenToSessionIfASessionIsProvided() { //Arrange var model = new LoginModelBuilder().WithSession().Build(); var existingUser = new User { EmailConfirmed = true }; _userManagerMock.Setup(manager => manager.FindByNameAsync(It.IsAny <string>())).ReturnsAsync(existingUser); _passwordHasherMock .Setup(hasher => hasher.VerifyHashedPassword(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(PasswordVerificationResult.Success); var createdAccesPass = new TokenAccessPass { Token = Guid.NewGuid().ToString() }; _accessPassFactoryMock .Setup(factory => factory.Create(It.IsAny <User>(), It.IsAny <IList <Claim> >(), It.IsAny <IList <string> >())) .Returns(createdAccesPass); //Act var result = _controller.CreateToken(model).Result as OkObjectResult; //Assert Assert.That(result, Is.Not.Null); _loginSessionServiceMock.Verify( service => service.SetLoginTokenForSessionAsync(model.LoginSessionPublicIdentifier, createdAccesPass.Token), Times.Once); Assert.That(result.Value, Is.SameAs(createdAccesPass)); }