Ejemplo n.º 1
0
        public async Task AddUserAsync_WhenAllInformationIsCorrect_ShouldReturnUserWithToken(string name, string email, string password)
        {
            var sutBuilder   = new UserServiceSutBuilder();
            var loginDetails = sutBuilder.CreateLoginDetails(email: email, password: password);
            var user2        = new CreateNewUser
            {
                Email    = email,
                Name     = name,
                Password = password,
            };
            var user        = user2.ToUser();
            var userService = sutBuilder.CreateSut();

            A.CallTo(() => sutBuilder.UserRepository.GetByEmailAndPasswordAsync(email, Hasher.GetHashed(password)))
            .Returns(user);

            A.CallTo(() => sutBuilder.UserRepository.AddAsync(A <User> .That.Matches(passedUser => passedUser.Name == user.Name &&
                                                                                     passedUser.Password == Hasher.GetHashed(user.Password) &&
                                                                                     passedUser.Email == user.Email)))
            .Returns(user);

            //Act
            var resultLogin = await userService.AddUserAsync(user2);

            //Assert
            resultLogin.Name.ShouldBe(name);
            resultLogin.Email.ShouldBe(email);
        }
Ejemplo n.º 2
0
        public void LoginAsync_WhenLoginDetailsAreIncorrect_ShouldThrow(string name, string email, string password)
        {
            //Arrange
            var sutBuilder   = new UserServiceSutBuilder();
            var user         = sutBuilder.CreateUser(name: name, email: email, password: password);
            var loginDetails = sutBuilder.CreateLoginDetails(email: email, password: password);
            var userService  = sutBuilder.CreateSut();

            //Act & Assert
            var exception = Assert.ThrowsAsync <ValidationException>(async() => await userService.LoginAsync(loginDetails));
        }
Ejemplo n.º 3
0
        public void AddUserAsync_WhenEmailIsWrong_ShouldThrow(string name, string email)
        {
            //Arrange
            var sutBuilder = new UserServiceSutBuilder();
            var user       = sutBuilder.CreateUser(name: name, email: email);
            var user2      = new CreateNewUser
            {
                Email = email,
                Name  = name
            };
            var userService = sutBuilder.CreateSut();

            //Act & Assert
            var exception = Assert.ThrowsAsync <ValidationException>(async() => await userService.AddUserAsync(user2));
        }
Ejemplo n.º 4
0
        public void GetUserAsync_WhenUserDoesNotExists_ShouldThrow(string name, string email)
        {
            //Arrange
            var sutBuilder  = new UserServiceSutBuilder();
            var user        = sutBuilder.CreateUser(name: name, email: email);
            var userService = sutBuilder.CreateSut();
            var userId      = Guid.NewGuid();

            A.CallTo(() => sutBuilder.UserRepository.GetByIdAsync(userId))
            .Returns <User?>(null);

            //Act & Assert
            var exception = Assert.ThrowsAsync <NotFoundException>(async() => await userService.GetUserAsync(userId));

            exception.Message.ShouldBe($"User with id ({userId}) does not exist");
        }
Ejemplo n.º 5
0
        public async Task GetUsersAsync_WhenUsersExists_ShouldReturnAllUsers()
        {
            //Arrange
            var         sutBuilder = new UserServiceSutBuilder();
            List <User> users      = sutBuilder.CreateUsers(5);

            var userService = sutBuilder.CreateSut();

            A.CallTo(() => sutBuilder.UserRepository.GetAllAsync(null))
            .Returns(users);

            //Act
            var resultLogin = await userService.GetUsersAsync();

            //Assert
            resultLogin.ShouldBe(users);
        }
Ejemplo n.º 6
0
        public void GetUserAsync_WhenUserExists_ShouldReturnUser(string name, string email)
        {
            //Arrange
            var sutBuilder  = new UserServiceSutBuilder();
            var user        = sutBuilder.CreateUser(name: name, email: email);
            var userService = sutBuilder.CreateSut();

            A.CallTo(() => sutBuilder.UserRepository.GetByIdAsync(user.Id))
            .Returns(user);

            //Act
            var resultLogin = userService.GetUserAsync(user.Id);

            //Assert
            resultLogin.Result.Name.ShouldBe(name);
            resultLogin.Result.Email.ShouldBe(email);
        }
Ejemplo n.º 7
0
        public async Task LoginAsync_WhenLoginDetailsAreCorrect_ShouldLoginUser(string name, string email, string password)
        {
            //Arrange
            var sutBuilder   = new UserServiceSutBuilder();
            var user         = sutBuilder.CreateUser(name: name, email: email, password: password);
            var loginDetails = sutBuilder.CreateLoginDetails(email: email, password: password);
            var userService  = sutBuilder.CreateSut();

            A.CallTo(() => sutBuilder.UserRepository.GetByEmailAndPasswordAsync(email, A <string> ._))
            .Returns(user);

            //Act
            var resultLogin = await userService.LoginAsync(loginDetails);

            //Assert
            resultLogin.Name.ShouldBe(name);
            resultLogin.Email.ShouldBe(email);
        }
Ejemplo n.º 8
0
        public void LoginAsync_WhenUserDoesNotExist_ShouldThrow(string name, string email, string password)
        {
            //Arrange
            var sutBuilder   = new UserServiceSutBuilder();
            var user         = sutBuilder.CreateUser(name: name, email: "*****@*****.**", password: password);
            var loginDetails = sutBuilder.CreateLoginDetails(email: email, password: password);
            var userService  = sutBuilder.CreateSut();

            A.CallTo(() => sutBuilder.UserRepository.GetByIdAsync(user.Id))
            .Returns <User?>(null);

            A.CallTo(() => sutBuilder.UserRepository.GetByEmailAndPasswordAsync(email, A <string> ._))
            .Returns <User?>(null);

            //Act & Assert
            var exception = Assert.ThrowsAsync <UnauthorizedException>(async() => await userService.LoginAsync(loginDetails));

            exception.Message.ShouldBe($"Username or password is incorrect");
        }
Ejemplo n.º 9
0
        public async Task SearchFurUsersAsync_WhenUsersMatchKeyword_ShouldReturnMatchedUsers()
        {
            //Arrange
            var         sutBuilder    = new UserServiceSutBuilder();
            List <User> returnedUsers = new List <User>
            {
                sutBuilder.CreateUser(name: "Jack", email: "*****@*****.**", password: "******"),
                sutBuilder.CreateUser(name: "James", email: "*****@*****.**", password: "******"),
            };

            var userService = sutBuilder.CreateSut();

            A.CallTo(() => sutBuilder.UserRepository.SearchNameAndEmailAsync("ja", null, 5))
            .Returns(returnedUsers);

            //Act
            var resultLogin = await userService.SearchForUsersAsync("ja", null, 5);

            //Assert
            resultLogin.ShouldBe(returnedUsers);
        }