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 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)); }