Exemple #1
0
        public void Auth_WhenBodyViewModelWithPasswordGrantTypeAndEmail_ShouldReturnTokenResponse()
        {
            //Arrange
            var userName = $"{_fixture.Create<string>()}@test.com";
            var password = _fixture.Create <string>();
            var token    = _fixture.Create <Token>();

            var tokenData = new TokenData
            {
                ExporationTimeInMinutes = 60,
                EncodedToken            = token.Value
            };

            TokenRequestViewModel viewModel = new TokenRequestViewModel
            {
                Username  = userName,
                ClientId  = token.ClientId,
                Password  = password,
                GrantType = "password"
            };
            var userResult = new GetUserQueryResult
            {
                User = new ApplicationUser
                {
                    Id       = token.UserId,
                    UserName = userName
                }
            };

            _serviceMock.Setup(x => x.GenerateRefreshToken(token.ClientId, token.UserId)).Returns(token);
            _serviceMock.Setup(x => x.CreateAccessToken(token.UserId)).Returns(tokenData);

            _queryDispatcherMock.Setup(x => x.DispatchAsync <GetUserByNameQuery, GetUserQueryResult>(It.IsAny <GetUserByNameQuery>()))
            .Returns(Task.FromResult(new GetUserQueryResult()));
            _queryDispatcherMock.Setup(x => x.DispatchAsync <GetUserByEmailQuery, GetUserQueryResult>(It.IsAny <GetUserByEmailQuery>()))
            .Returns(Task.FromResult(userResult));
            _queryDispatcherMock.Setup(x => x.DispatchAsync <CheckUserPasswordQuery, CheckUserPasswordQueryResult>(It.IsAny <CheckUserPasswordQuery>()))
            .Returns(Task.FromResult(new CheckUserPasswordQueryResult
            {
                IsCorrect = true
            }));

            _commandDispatcherMock.Setup(x => x.DispatchAsync <AddTokenCommand>(It.IsAny <AddTokenCommand>()))
            .Returns(Task.CompletedTask);

            //Act
            var result = _controller.Auth(viewModel).Result as JsonResult;

            //Assert
            Assert.IsNotNull(result);

            var json = new JsonResult(new TokenResponseViewModel
            {
                Expiration   = tokenData.ExporationTimeInMinutes,
                RefreshToken = tokenData.EncodedToken,
                Token        = token.Value
            });

            Assert.AreEqual(result.Value.ToString(), json.Value.ToString());
        }
Exemple #2
0
        public void Then_If_Null_Then_Null_Returned()
        {
            var source = new GetUserQueryResult
            {
                User = null
            };

            var actual = (UserApiResponse)source;

            actual.Should().BeNull();
        }
Exemple #3
0
        public UserVm GetUserById(UserVm vm)
        {
            if (vm == null)
            {
                throw new ArgumentNullException(string.Format(MessagesModel.NullValueError, "UserEditVm vm"));
            }

            GetUserByIdQuery query = new GetUserByIdQuery(vm.Id);

            GetUserQueryResult result = this.queryDispatcher.Dispatch <GetUserByIdQuery, GetUserQueryResult, User>(query);

            vm = UserModelHelper.QueryResultToUserVm(result);

            return(vm);
        }
        public async Task Then_The_Query_Is_Handled_And_Data_Returned(
            string email,
            GetUserQueryResult mediatorResult,
            [Frozen] Mock <IMediator> mediator,
            [Greedy] UsersController controller)
        {
            mediator
            .Setup(x => x.Send(
                       It.Is <GetUserQuery>(c => c.Email.Equals(email)),
                       CancellationToken.None))
            .ReturnsAsync(mediatorResult);

            var actual = await controller.GetUser(email) as OkObjectResult;

            var actualModel = actual !.Value as UserApiResponse;

            actualModel.Should().BeEquivalentTo((UserApiResponse)mediatorResult);
        }
        public static UserVm QueryResultToUserVm(GetUserQueryResult result)
        {
            if (result == null)
            {
                throw new ArgumentNullException(string.Format(MessagesModel.NullValueError, "result"));
            }

            UserVm vm = new UserVm();

            vm.DateAdded = result.DateAdded;
            vm.Id        = result.Id;
            vm.FirstName = result.FirstName;
            vm.LastName  = result.LastName;
            vm.Email     = result.Email;
            vm.Roles     = result.Roles;
            vm.Groups    = result.Groups;
            vm.IsEnabled = result.IsEnabled;

            return(vm);
        }
Exemple #6
0
        public void Auth_WhenBodyViewModelWithPasswordGrantTypeWrongPassword_ShouldReturnUnauthorizedResult()
        {
            //Arrange
            var userName = _fixture.Create <string>();
            var password = _fixture.Create <string>();
            var token    = _fixture.Create <Token>();

            TokenRequestViewModel viewModel = new TokenRequestViewModel
            {
                Username  = userName,
                ClientId  = token.ClientId,
                Password  = password,
                GrantType = "password"
            };
            var userResult = new GetUserQueryResult
            {
                User = new ApplicationUser
                {
                    Id       = token.UserId,
                    UserName = userName
                }
            };

            _queryDispatcherMock.Setup(x => x.DispatchAsync <GetUserByNameQuery, GetUserQueryResult>(It.IsAny <GetUserByNameQuery>()))
            .Returns(Task.FromResult(userResult));
            _queryDispatcherMock.Setup(x => x.DispatchAsync <CheckUserPasswordQuery, CheckUserPasswordQueryResult>(It.IsAny <CheckUserPasswordQuery>()))
            .Returns(Task.FromResult(new CheckUserPasswordQueryResult
            {
                IsCorrect = false
            }));

            _commandDispatcherMock.Setup(x => x.DispatchAsync <AddTokenCommand>(It.IsAny <AddTokenCommand>()))
            .Verifiable();

            //Act
            var result = _controller.Auth(viewModel).Result;

            //Assert
            Assert.IsInstanceOf <UnauthorizedResult>(result);
        }
Exemple #7
0
        public void Then_The_Fields_Are_Mapped(GetUserQueryResult source)
        {
            var actual = (UserApiResponse)source;

            actual.User.Should().BeEquivalentTo(source.User);
        }
Exemple #8
0
        public void Auth_WhenBodyViewModelWithRefreshTokenGrantTypeAndUserName_ShouldReturnTokenResponse()
        {
            //Arrange
            var userName = _fixture.Create <string>();
            var clientId = _fixture.Create <string>();
            var userId   = _fixture.Create <string>();
            var password = _fixture.Create <string>();

            var refreshToken = new Token
            {
                ClientId     = clientId,
                UserId       = userId,
                Id           = 1,
                CreationDate = DateTime.Now,
                Value        = Guid.NewGuid().ToString()
            };

            var newRefreshToken = new Token
            {
                ClientId     = clientId,
                UserId       = userId,
                Id           = 1,
                CreationDate = DateTime.Now,
                Value        = Guid.NewGuid().ToString()
            };

            var tokenData = new TokenData
            {
                ExporationTimeInMinutes = 60,
                EncodedToken            = refreshToken.Value
            };

            TokenRequestViewModel viewModel = new TokenRequestViewModel
            {
                Username  = userName,
                ClientId  = refreshToken.ClientId,
                Password  = password,
                GrantType = "refresh_token"
            };

            var userResult = new GetUserQueryResult
            {
                User = new ApplicationUser
                {
                    Id       = refreshToken.UserId,
                    UserName = userName
                }
            };

            var tokenResult = new GetTokenQueryResult
            {
                Token = refreshToken
            };

            _serviceMock.Setup(x => x.GenerateRefreshToken(refreshToken.ClientId, refreshToken.UserId)).Returns(newRefreshToken);
            _serviceMock.Setup(x => x.CreateAccessToken(refreshToken.UserId)).Returns(tokenData);

            _queryDispatcherMock.Setup(x => x.DispatchAsync <GetUserByIdQuery, GetUserQueryResult>(It.IsAny <GetUserByIdQuery>()))
            .Returns(Task.FromResult(userResult));
            _queryDispatcherMock.Setup(x => x.DispatchAsync <GetTokenQuery, GetTokenQueryResult>(It.IsAny <GetTokenQuery>()))
            .Returns(Task.FromResult(tokenResult));
            _commandDispatcherMock.Setup(x => x.DispatchAsync <AddTokenCommand>(It.IsAny <AddTokenCommand>()))
            .Returns(Task.CompletedTask);
            _commandDispatcherMock.Setup(x => x.DispatchAsync <RemoveTokenCommand>(It.IsAny <RemoveTokenCommand>()))
            .Returns(Task.CompletedTask);

            //Act
            var result = _controller.Auth(viewModel).Result as JsonResult;

            //Assert
            Assert.IsNotNull(result);

            var json = new JsonResult(new TokenResponseViewModel
            {
                Expiration   = tokenData.ExporationTimeInMinutes,
                RefreshToken = tokenData.EncodedToken,
                Token        = newRefreshToken.Value
            });

            Assert.AreEqual(result.Value.ToString(), json.Value.ToString());
        }