Exemple #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);
        }
        public async Task <User> AddUserAsync(CreateNewUser newUserData)
        {
            newUserData.Validate();
            var user = newUserData.ToUser();

            user.Password = Hasher.GetHashed(user.Password);

            var addedUser = await userRepository.AddAsync(user);

            return(await LoginAsync(new LoginDetails()
            {
                Email = addedUser.Email, Password = newUserData.Password
            }));
        }