public void Login_WhenUserNameIsNotInDatabase_ReturnUserDoesntExist() { string usernameNotInDb = It.IsNotIn(new[] { "meAmnestic" }); Expression <Func <User, bool> > expression = u => u.Username == usernameNotInDb; repository.Setup(repo => repo.Any(It.Is <Expression <Func <User, bool> > >(x => LambdaCompare.Eq(x, expression)))) .Returns(false); repository.Setup(repo => repo.FindBy(It.Is <Expression <Func <User, bool> > >(x => LambdaCompare.Eq(x, expression)))) .Returns <IQueryable <User> >(null); LoginServiceResponse response = loginService.Login(new User() { Username = usernameNotInDb }); response.Should().Be(LoginServiceResponse.UserDoesntExist); }
public void Login_WhenUserIsInDatabaseAndPasswordsMatch_ReturnsLoginSuccessful() { const string ExplicitPassword = "******"; const string ExistingUsername = "******"; string usernameInDb = It.IsAny <string>(); Expression <Func <User, bool> > expression = u => u.Username == usernameInDb; byte[] salt = cryptographyService.GenerateRandomSalt(); IQueryable <User> queryable = (new User[] { new User { Username = ExistingUsername, Password = Convert.ToBase64String(cryptographyService.GenerateSHA512(ExplicitPassword, salt)), Salt = salt } }).AsQueryable(); repository.Setup(urm => urm.Any(It.IsAny <Expression <Func <User, bool> > >())) .Returns(true); repository.Setup(repo => repo.FindBy(It.IsAny <Expression <Func <User, bool> > >())) .Returns(() => queryable); LoginServiceResponse response = loginService.Login(new User() { Username = ExistingUsername, Password = ExplicitPassword }); response.Should().Be(LoginServiceResponse.LoginSuccessful); }
public void Login_WhenUserIsInDatabaseAndPasswordDoesntMatch_ReturnsIncorrectPassword (string password) { const string ExplicitPassword = "******"; string usernameInDb = It.IsAny <string>(); Expression <Func <User, bool> > expression = u => u.Username == usernameInDb; byte[] salt = cryptographyService.GenerateRandomSalt(); IQueryable <User> queryable = (new User[] { new User { Username = usernameInDb, Password = Convert.ToBase64String(cryptographyService.GenerateSHA512(ExplicitPassword, salt)), Salt = salt } }).AsQueryable(); repository.Setup(repo => repo.Any(It.IsAny <Expression <Func <User, bool> > >())) .Returns(true); repository.Setup(repo => repo.FindBy(It.Is <Expression <Func <User, bool> > >(x => LambdaCompare.Eq(x, expression)))) .Returns(() => queryable); LoginServiceResponse response = loginService.Login(new User() { Username = usernameInDb, Password = password }); response.Should().Be(LoginServiceResponse.IncorrectPassword); }