private async Task <string> SignIn(SignInCommand command, User user) { var handler = new SignInCommandHandler(new InMemoryUserRepository(user), new InMemoryHashPassword("password"), new InMemoryTokenGenerator("jwtToken")); return(await handler.Handle(command, default)); }
public async Task Handle_Uses_GenerateJWT_From_IIdentityService_To_Get_The_Jwt() { // Arrange var sut = new SignInCommandHandler(_identityService.Object, _identityRepository.Object, _existsIdentity.Object); // Act await sut.Handle(NewSignInCommand(), new CancellationToken()); // Asset _identityService.Verify(s => s.GenerateJWT(It.IsAny <Identity>()), Times.Once); }
public async Task Handle_Uses_EnforceRule_From_IExistsIdentitySpecification_To_Verify_That_The_Identity_Is_Not_Null() { // Arrange var sut = new SignInCommandHandler(_identityService.Object, _identityRepository.Object, _existsIdentity.Object); // Act await sut.Handle(NewSignInCommand(), new CancellationToken()); // Asset _existsIdentity.Verify(s => s.EnforceRule(It.IsAny <Identity>(), It.IsAny <string>()), Times.Once); }
public async Task Handle_Uses_GetAsync_From_IIdentityRepository_To_Retrieve_The_Identity() { // Arrange var sut = new SignInCommandHandler(_identityService.Object, _identityRepository.Object, _existsIdentity.Object); // Act await sut.Handle(NewSignInCommand(), new CancellationToken()); // Asset _identityRepository.Verify(r => r.GetAsync(It.IsAny <Expression <Func <Identity, bool> > >()), Times.Once); }
public async Task ShouldSignInIfLoginPasswordOk() { var authentication = new Authentication("username", "passwordpassword", "token"); var authenticationGateway = new InMemoryAuthenticationGateway(authentication); var command = new SignInCommand("username", "password"); var presenter = new SignInTestPresenter(); var handler = new SignInCommandHandler(authenticationGateway, presenter, new FakeHashPassword()); await handler.Handle(command); Assert.Equal("token", presenter.GetToken()); }
public async Task ShouldNotGetTokenIfAuthenticationFailed() { var authentication = new Authentication("user", "pass", "token"); var authenticationGateway = new InMemoryAuthenticationGateway(authentication); var command = new SignInCommand("username", "password"); var presenter = new SignInTestPresenter(); var handler = new SignInCommandHandler(authenticationGateway, presenter, new FakeHashPassword()); await handler.Handle(command); Assert.Collection(presenter.GetErrors(), x => { Assert.Equal("Identification failed", x); }); }
public void SignIn_WrongData_Fail(string _email, string _password) { DatabaseQueryProcessor.Erase(); Shared.FillTheDatabase(); var signInCommand = new SignInCommand { email = _email, password = _password }; var handler = new SignInCommandHandler(); var result = (SignInInfoDto)handler.Handle(signInCommand); DatabaseQueryProcessor.Erase(); Assert.IsFalse(result.isSuccess); }
public async Task SignInUser_WhenGivenCredentialsAreNotValid_ReturnFailure() { using (var sut = new SystemUnderTest()) { await sut.UsersRepository.AddAsync( new User(Guid.NewGuid(), "*****@*****.**", false, Enumerable.Empty <Role>(), "zaq1@WSX", "pass-salt", DateTime.Now) ); var command = new SignInCommand("*****@*****.**", "bad-password"); var handler = new SignInCommandHandler(sut.UsersRepository, sut.PasswordService, sut.TokenService); var result = await handler.HandleAsync(command); result.IsSuccess.Should().BeFalse(); result.Message.Should().BeEquivalentTo("Given email or password are not valid."); } }
public async Task SignInUser_WhenGivenCredentialsAreValid_ReturnSuccess() { using (var sut = new SystemUnderTest()) { await sut.UsersRepository.AddAsync( new User(Guid.NewGuid(), "*****@*****.**", false, Enumerable.Empty <Role>(), "zaq1@WSX-hash", "password-salt", DateTime.Now) ); var command = new SignInCommand("*****@*****.**", "zaq1@WSX"); var handler = new SignInCommandHandler(sut.UsersRepository, sut.PasswordService, sut.TokenService); var result = await handler.HandleAsync(command); var token = JsonConvert.DeserializeObject <TokenResult>(result.Message); result.IsSuccess.Should().BeTrue(); token.Token.Should().Be("token"); token.Expiry.Should().BeAfter(DateTime.Now); } }