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