예제 #1
0
        public async Task Handler_Login()
        {
            var user = DataHelper.GetUser("test");

            HashingHelper.CreatePasswordHash("123456", out byte[] passwordSalt, out byte[] passwordHash);
            user.PasswordSalt = passwordSalt;
            user.PasswordHash = passwordHash;
            _userRepository.
            Setup(x => x.GetAsync(It.IsAny <Expression <Func <User, bool> > >())).Returns(() => Task.FromResult(user));


            _userRepository.Setup(x => x.GetClaims(It.IsAny <int>()))
            .Returns(new List <OperationClaim>()
            {
                new OperationClaim()
                {
                    Id = 1, Name = "test"
                }
            });
            loginUserQuery = new LoginUserQuery
            {
                Email    = user.Email,
                Password = "******"
            };

            var result = await loginUserQueryHandler.Handle(loginUserQuery, new System.Threading.CancellationToken());

            Assert.That(result.Success, Is.True);
        }
예제 #2
0
        public async Task GivenLoginUserQueryHandler_WhenIncorrectLoginInfoProvided_ThenShouldRaiseException()
        {
            _mockUserManager.FindByEmailAsync(_query.Email).ReturnsNullForAnyArgs();

            var loginUserQueryHandler = new LoginUserQueryHandler(_mockUserManager, _mockJwtGenerator, _mockEventBus);

            await Assert.ThrowsAsync <RestException>(() => loginUserQueryHandler.Handle(_query, CancellationToken.None));
        }
예제 #3
0
        public async Task GivenLoginUserQueryHandler_WhenCheckingPasswordFails_ThenShouldThrowRestException()
        {
            _mockUserManager.FindByEmailAsync(_query.Email).ReturnsForAnyArgs(_user);
            _mockUserManager.CheckPasswordAsync(_user, _query.Password).ReturnsForAnyArgs(false);

            var loginUserQueryHandler = new LoginUserQueryHandler(_mockUserManager, _mockJwtGenerator, _mockEventBus);

            await Assert.ThrowsAsync <RestException>(() => loginUserQueryHandler.Handle(_query, CancellationToken.None));
        }
예제 #4
0
        GivenLoginUserQueryHandler_WhenCorrectLoginInfoProvided_ThenShouldCallUserManagerToCheckPassword()
        {
            _mockUserManager.FindByEmailAsync(_query.Email).ReturnsForAnyArgs(_user);
            _mockUserManager.CheckPasswordAsync(_user, _query.Password).ReturnsForAnyArgs(true);

            var loginUserQueryHandler = new LoginUserQueryHandler(_mockUserManager, _mockJwtGenerator, _mockEventBus);

            await loginUserQueryHandler.Handle(_query, CancellationToken.None);

            await _mockUserManager.Received().CheckPasswordAsync(Arg.Any <AppUser>(), Arg.Any <string>());
        }
예제 #5
0
        public async Task GivenLoginUserQueryHandler_WhenUserAuthenticated_ThenShouldPublishAuthenticationLogEvent()
        {
            _mockUserManager.FindByEmailAsync(_query.Email).ReturnsForAnyArgs(_user);
            _mockUserManager.CheckPasswordAsync(_user, _query.Password).ReturnsForAnyArgs(true);

            var loginUserQueryHandler = new LoginUserQueryHandler(_mockUserManager, _mockJwtGenerator, _mockEventBus);

            await loginUserQueryHandler.Handle(_query, CancellationToken.None);

            _mockEventBus.Received().Publish(Arg.Any <AuthenticationLogEvent>());
        }
예제 #6
0
        public async Task GivenLoginUserQueryHandler_WhenCorrectLoginInfoProvided_ThenShouldAuthenticateUser()
        {
            _mockUserManager.FindByEmailAsync(_query.Email).ReturnsForAnyArgs(_user);
            _mockUserManager.CheckPasswordAsync(_user, _query.Password).ReturnsForAnyArgs(true);

            var loginUserQueryHandler = new LoginUserQueryHandler(_mockUserManager, _mockJwtGenerator, _mockEventBus);

            var authenticatedUser = await loginUserQueryHandler.Handle(_query, CancellationToken.None);

            Assert.NotNull(authenticatedUser);
            Assert.Equal(authenticatedUser.Email, _query.Email);
        }
예제 #7
0
        GivenLoginUserQueryHandler_WhenCheckingPasswordFails_ThenShouldPublishLogErrorEvent()
        {
            _mockUserManager.FindByEmailAsync(_query.Email).ReturnsForAnyArgs(_user);
            _mockUserManager.CheckPasswordAsync(_user, _query.Password).ReturnsForAnyArgs(false);

            var loginUserQueryHandler = new LoginUserQueryHandler(_mockUserManager, _mockJwtGenerator, _mockEventBus);

            try
            {
                await loginUserQueryHandler.Handle(_query, CancellationToken.None);
            }
            catch
            {
                _mockEventBus.Received().Publish(Arg.Any <ErrorLogEvent>());
            }
        }
        public async Task Handler_Login()
        {
            var user = DataHelper.GetUser("test");

            HashingHelper.CreatePasswordHash("123456", out var passwordSalt, out var passwordHash);
            user.PasswordSalt = passwordSalt;
            user.PasswordHash = passwordHash;
            _userRepository.Setup(x => x.GetAsync(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns(() => Task.FromResult(user));


            _tokenHelper.Setup(x => x.CreateToken <DArchToken>(It.IsAny <User>())).Returns(new DArchToken()
            {
                Token      = "TestToken",
                Claims     = new List <string>(),
                Expiration = DateTime.Now.AddHours(1)
            });

            _userRepository.Setup(x => x.GetClaims(It.IsAny <int>()))
            .Returns(new List <OperationClaim>()
            {
                new OperationClaim()
                {
                    Id = 1, Name = "test"
                }
            });
            _loginUserQuery = new LoginUserQuery
            {
                Email    = user.Email,
                Password = "******"
            };

            var result = await _loginUserQueryHandler.Handle(_loginUserQuery, new CancellationToken());

            result.Success.Should().BeTrue();
        }
        public void WhenCalled_CheckIfPasswordIsInvalid()
        {
            _sut.Handle(_query, default).Wait();

            _service.Verify(x => x.CheckIfPasswordIsInvalid(_user, _query.Password));
        }