public async Task AuthenticateQueryHandler_ShouldReturnUser_WhenTokenIsValid() { // Arrange const string expectedToken = "some.access.token"; IHeaderDictionary headers = new HeaderDictionary { { "Authorization", expectedToken } }; IEnumerable <User> expectedUser = new [] { new User { UserId = 1 } }; IQueryable <User> userQueryableMock = expectedUser .AsQueryable() .BuildMock() .Object; _httpContextAccessorMock .Setup(m => m.HttpContext.Request.Headers) .Returns(headers); _unitOfWorkMock .Setup(m => m.Users.GetById(It.IsAny <int>())) .Returns(userQueryableMock); AuthenticateQuery.Handler handler = new AuthenticateQuery.Handler(_unitOfWorkMock.Object, _mapperMock, _httpContextAccessorMock.Object, _userProviderMock.Object); // Act AuthenticatedUserResource user = await handler.Handle(new AuthenticateQuery()); // Assert Assert.NotNull(user); Assert.Equal(1, user.UserId); Assert.Equal(expectedToken, user.Token); }
public async Task AuthenticateQueryHandler_ShouldReturnNull_WhenNameIdentifierClaimIsInvalid() { // Arrange const string expectedToken = "some.access.token"; Claim expectedNameIdentifierClaim = new Claim(ClaimTypes.NameIdentifier, "8979"); IHeaderDictionary headers = new HeaderDictionary { { "Authorization", expectedToken } }; IEnumerable <User> expectedUser = Enumerable.Empty <User>(); IQueryable <User> userQueryableMock = expectedUser .AsQueryable() .BuildMock() .Object; _httpContextAccessorMock .Setup(m => m.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)) .Returns(expectedNameIdentifierClaim); _httpContextAccessorMock .Setup(m => m.HttpContext.Request.Headers) .Returns(headers); _unitOfWorkMock .Setup(m => m.Users.GetById(It.IsAny <int>())) .Returns(userQueryableMock); AuthenticateQuery.Handler handler = new AuthenticateQuery.Handler(_unitOfWorkMock.Object, _mapperMock, _httpContextAccessorMock.Object, _userProviderMock.Object); // Act AuthenticatedUserResource user = await handler.Handle(new AuthenticateQuery()); // Assert Assert.Null(user); }