public UserWithTokenModel Authenticate([FromBody] LoginModel model) { var result = _query.Authenticate(model.Username, model.Password); var resultModel = _mapper.Map <UserWithTokenModel>(result); return(resultModel); }
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); }