// Copyright © 2015 HSL <https://www.hsl.fi> // This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses. package fi.hsl.parkandride.back; import fi.hsl.parkandride.core.back.UserRepository; import fi.hsl.parkandride.core.domain.SearchResults; import fi.hsl.parkandride.core.domain.User; import fi.hsl.parkandride.core.domain.UserSearch; import fi.hsl.parkandride.core.domain.UserSecret; import org.joda.time.DateTime; import org.junit.Test; import javax.inject.Inject; import static fi.hsl.parkandride.core.domain.Role.ADMIN; import static org.assertj.core.api.Assertions.assertThat; public class UserDaoTest extends AbstractDaoTest { @Inject UserRepository userRepository; @Test public void create_read_and_update() throws InterruptedException { DateTime referenceTime = userRepository.getCurrentTime(); final UserSecret newUser = new UserSecret(0, "user", "user-password", ADMIN); Thread.sleep(1); long userId = userRepository.insertUser(newUser); newUser.user.id = userId; assertThat(userId).isGreaterThan(0); UserSecret userSecret = userRepository.getUser(userId); assertThat(userSecret.minTokenTimestamp.getMillis()).isGreaterThan(referenceTime.getMillis()); assertEquals(userSecret, newUser); assertEquals(userRepository.getUser("user"), newUser); referenceTime = userSecret.minTokenTimestamp; Thread.sleep(1); userRepository.revokeTokens(userId, userRepository.getCurrentTime()); userSecret = userRepository.getUser(userId); assertThat(userSecret.minTokenTimestamp.getMillis()).isGreaterThan(referenceTime.getMillis()); referenceTime = userSecret.minTokenTimestamp; Thread.sleep(1); userRepository.updatePassword(userId, "new-password"); userSecret = userRepository.getUser(userId); assertThat(userSecret.minTokenTimestamp.getMillis()).isGreaterThan(referenceTime.getMillis()); assertThat(userSecret.password).isEqualTo("new-password"); SearchResults<User> users = userRepository.findUsers(new UserSearch()); assertThat(users.size()).isEqualTo(1); assertEquals(users.get(0), newUser.user); } private void assertEquals(UserSecret actual, UserSecret expected) { assertThat(actual).isNotNull(); assertThat(actual.minTokenTimestamp).isNotNull(); assertThat(actual.password).isEqualTo(expected.password); assertEquals(actual.user, expected.user); } private void assertEquals(User actual, User expected) { assertThat(actual.id).isEqualTo(expected.id); assertThat(actual.username).isEqualTo(expected.username); assertThat(actual.role).isEqualTo(expected.role); assertThat(actual.operatorId).isEqualTo(expected.operatorId); } }