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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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());
        }
Beispiel #6
0
        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);
            });
        }
Beispiel #7
0
        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);
            }
        }