public void GetUserId_General(string login, string password) { var repositoryMock = new Mock<ILoginAuthenticationRepository>(MockBehavior.Loose); var passwordValidatorMock = new Mock<IPasswordValidator>(MockBehavior.Loose); var saltedHashGenerator = new SaltedHashGenerator(); var service = new LoginAuthenticationService(repositoryMock.Object, passwordValidatorMock.Object, saltedHashGenerator); var userId = service.GetUserId(login, password); Assert.IsNull(userId); repositoryMock.Verify(repository => repository.GetByLogin(login)); }
public void GetUserId_CheckPassword(bool loginCorrect, bool passwordCorrect) { const string login = "******"; var inputPass = "******"; var dbPass = passwordCorrect ? inputPass : "******"; var repositoryMock = new Mock<ILoginAuthenticationRepository>(MockBehavior.Loose); var passwordValidatorMock = new Mock<IPasswordValidator>(MockBehavior.Loose); var saltedHashGenerator = new SaltedHashGenerator(); byte[] salt; var dbHash = saltedHashGenerator.GenerateSaltedHash(dbPass, out salt, 32); var loginAuthentication = new LoginAuthentication { Id = long.MaxValue - 1, UserId = long.MaxValue, Salt = salt, PasswordHash = dbHash }; repositoryMock.Setup(repository => repository.GetByLogin(login)).Returns(loginCorrect ? loginAuthentication : null); var service = new LoginAuthenticationService(repositoryMock.Object, passwordValidatorMock.Object, saltedHashGenerator); var userId = service.GetUserId(login, inputPass); if (loginCorrect && passwordCorrect) { Assert.NotNull(userId); Assert.AreEqual(loginAuthentication.UserId, userId.Value); } else { Assert.IsNull(userId); } }