コード例 #1
0
        public UserWithTokenModel Authenticate([FromBody] LoginModel model)
        {
            var result = _query.Authenticate(model.Username, model.Password);

            var resultModel = _mapper.Map <UserWithTokenModel>(result);

            return(resultModel);
        }
コード例 #2
0
        public void AuthenticateShouldReturnUserAndToken()
        {
            var password = _random.Next().ToString();
            var user     = new User
            {
                UserName = _random.Next().ToString(),
                Password = password.WithBCrypt(),
                Roles    = new List <UserRole>
                {
                    new UserRole {
                        Role = new Role {
                            Name = _random.Next().ToString()
                        }
                    },
                    new UserRole {
                        Role = new Role {
                            Name = _random.Next().ToString()
                        }
                    },
                }
            };

            _userList.Add(user);

            var expireTokenDate = DateTime.Now + TokenAuthOption.ExpiresSpan;

            var token = _random.Next().ToString();

            _tokenBuilder.Setup(tb => tb.Build(
                                    user.UserName,
                                    It.Is <string[]>(roles => roles.SequenceEqual(user.Roles.Select(x => x.Role.Name).ToArray())),
                                    It.Is <DateTime>(d => d - expireTokenDate < TimeSpan.FromSeconds(1))))
            .Returns(token);

            var result = _query.Authenticate(user.UserName, password);

            result.User.Should().Be(user);
            result.Token.Should().Be(token);
            result.ExpiresAt.Should().BeCloseTo(expireTokenDate, 1000);
        }