@Test public void return_login_when_token_hash_found_in_db() { String token = "known-token"; String tokenHash = "123456789"; when(tokenGenerator.hash(token)).thenReturn(tokenHash); UserDto user1 = db.users().insertUser(); db.users().insertToken(user1, t -> t.setTokenHash(tokenHash)); UserDto user2 = db.users().insertUser(); db.users().insertToken(user2, t -> t.setTokenHash("another-token-hash")); Optional<String> login = underTest.authenticate(token); assertThat(login.isPresent()).isTrue(); assertThat(login.get()).isEqualTo(user1.getUuid()); }
@Test public void select_by_token_hash() { UserDto user = db.users().insertUser(); String tokenHash = "123456789"; db.users().insertToken(user, t -> t.setTokenHash(tokenHash)); UserTokenDto result = underTest.selectByTokenHash(db.getSession(), tokenHash); assertThat(result).isNotNull(); }
private UserTokenDto insertTokenInDb(DbSession dbSession, UserDto user, String name, String tokenHash) { UserTokenDto userTokenDto = new UserTokenDto() .setUserUuid(user.getUuid()) .setName(name) .setTokenHash(tokenHash) .setCreatedAt(system.now()); dbClient.userTokenDao().insert(dbSession, userTokenDto); dbSession.commit(); return userTokenDto; }
@Test public void select_by_user_and_name() { UserDto user = db.users().insertUser(); UserTokenDto userToken = db.users().insertToken(user, t -> t.setName("name").setTokenHash("token")); UserTokenDto resultByLoginAndName = underTest.selectByUserAndName(db.getSession(), user, userToken.getName()); assertThat(resultByLoginAndName.getUserUuid()).isEqualTo(user.getUuid()); assertThat(resultByLoginAndName.getName()).isEqualTo(userToken.getName()); assertThat(resultByLoginAndName.getCreatedAt()).isEqualTo(userToken.getCreatedAt()); assertThat(resultByLoginAndName.getTokenHash()).isEqualTo(userToken.getTokenHash()); assertThat(underTest.selectByUserAndName(db.getSession(), user, "unknown-name")).isNull(); }
@Test public void fail_if_token_hash_is_longer_than_255_characters() { expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Token hash length (256) is longer than the maximum authorized (255)"); new UserTokenDto().setTokenHash(randomAlphabetic(256)); } }
@Test public void fail_if_token_hash_already_exists_in_db() { UserDto user = db.users().insertUser(); logInAsSystemAdministrator(); when(tokenGenerator.hash(anyString())).thenReturn("987654321"); db.users().insertToken(user, t -> t.setTokenHash("987654321")); expectedException.expect(ServerException.class); expectedException.expectMessage("Error while generating token. Please try again."); newRequest(user.getLogin(), TOKEN_NAME); }
public static UserTokenDto newUserToken() { return new UserTokenDto() .setUserUuid("userUuid_" + randomAlphanumeric(40)) .setName("name_" + randomAlphanumeric(20)) .setTokenHash("hash_" + randomAlphanumeric(30)) .setCreatedAt(nextLong()); } }
private UserTokenDto insertTokenInDb(DbSession dbSession, UserDto user, String name, String tokenHash) { UserTokenDto userTokenDto = new UserTokenDto() .setUserUuid(user.getUuid()) .setName(name) .setTokenHash(tokenHash) .setCreatedAt(system.now()); dbClient.userTokenDao().insert(dbSession, userTokenDto); dbSession.commit(); return userTokenDto; }