### Question:
SqlUserRepository extends UserRepository { @Override public boolean isPasswordValid(User user, String password) { checkNotNull(password); if (user == null || user.getUserId() == null || (user.getUserId() != null && findById(user.getUserId()) == null)) { throw new LumifyException("User is not valid"); } byte[] passwordSalt = ((SqlUser) user).getPasswordSalt(); byte[] passwordHash = ((SqlUser) user).getPasswordHash(); if (passwordSalt == null || passwordHash == null) { return false; } return UserPasswordUtil.validatePassword(password, passwordSalt, passwordHash); } @Inject  SqlUserRepository(final Configuration configuration,
                             final HibernateSessionManager sessionManager,
                             final AuthorizationRepository authorizationRepository,
                             final UserListenerUtil userListenerUtil,
                             final Graph graph); @Override User findByUsername(String username); @Override Iterable<User> find(int skip, int limit); @Override Iterable<User> findByStatus(int skip, int limit, UserStatus status); @Override User findById(String userId); @Override User addUser(String username, String displayName, String emailAddress, String password, String[] userAuthorizations); @Override void setPassword(User user, String password); @Override boolean isPasswordValid(User user, String password); @Override void recordLogin(User user, String remoteAddr); @Override User setCurrentWorkspace(String userId, String workspaceId); @Override String getCurrentWorkspaceId(String userId); @Override void setUiPreferences(User user, JSONObject preferences); @Override User setStatus(String userId, UserStatus status); @Override void addAuthorization(User userUser, String auth); @Override void removeAuthorization(User userUser, String auth); @Override org.securegraph.Authorizations getAuthorizations(User user, String... additionalAuthorizations); @Override void setDisplayName(User user, String displayName); @Override void setEmailAddress(User user, String emailAddress); @Override Set<Privilege> getPrivileges(User user); @Override void delete(User user); @Override void setPrivileges(User user, Set<Privilege> privileges); @Override User findByPasswordResetToken(String token); @Override void setPasswordResetTokenAndExpirationDate(User user, String token, Date expirationDate); @Override void clearPasswordResetTokenAndExpirationDate(User user);  }### Answer:
@Test(expected = NullPointerException.class) public void testIsPasswordValidWithNullPassword() { sqlUserRepository.isPasswordValid(new SqlUser(), null); }
@Test(expected = LumifyException.class) public void testIsPasswordValidWithNonExisitingUser() { sqlUserRepository.isPasswordValid(null, "123"); }
@Test public void testIsPasswordValid() throws Exception { SqlUser testUser = (SqlUser) sqlUserRepository.addUser("1234", "test user", null, null, new String[0]); assertFalse(sqlUserRepository.isPasswordValid(testUser, "")); sqlUserRepository.setPassword(testUser, "abc"); assertTrue(sqlUserRepository.isPasswordValid(testUser, "abc")); }
@Test(expected = LumifyException.class) public void testIsPasswordValidWithNullUser() { sqlUserRepository.isPasswordValid(null, "1234"); }