示例#1
0
        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));
        }
示例#2
0
        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));
        }