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); }
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)); }
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)); }
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>()); }
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>()); }
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); }
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)); }