package de.passau.uni.sec.compose.id.core.persistence; import de.passau.uni.sec.compose.id.core.persistence.entities.*; import de.passau.uni.sec.compose.id.core.persistence.repository.GroupRepository; import de.passau.uni.sec.compose.id.core.persistence.repository.RoleRepository; import de.passau.uni.sec.compose.id.core.persistence.repository.UserRepository; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import javax.persistence.EntityNotFoundException; import java.util.Collection; import java.util.Date; import java.util.LinkedList; import java.util.UUID; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; public class TestUserRepository extends IntegrationTestBase { @Qualifier("userRepository") @Autowired UserRepository userRepository; @Qualifier("groupRepository") @Autowired GroupRepository groupRepository; @Qualifier("roleRepository") @Autowired RoleRepository roleRepository; /** * Tests the user repository by adding a user. */ @Test public void testAddUser() { User u = new User(); u.setId(UUID.randomUUID().toString()); u.setUsername("somenewguy"); u.setLastModified(new Date(System.currentTimeMillis())); userRepository.saveAndFlush(u); User res = userRepository.getOne(u.getId()); assertEquals(res, u); } @Test public void testGetUser() { User u = new User(); u.setId(UUID.randomUUID().toString()); userRepository.saveAndFlush(u); u.setLastModified(new Date(System.currentTimeMillis())); User res = userRepository.getOne(u.getId()); assertEquals(res, u); } @Test public void testUpdateUser() { String userId = UUID.randomUUID().toString(); User u = new User(); u.setId(userId); u.setLastModified(new Date(System.currentTimeMillis())); userRepository.saveAndFlush(u); User res = userRepository.getOne(u.getId()); assertEquals(res, u); Group g = new Group(); g.setId(UUID.randomUUID().toString()); g.setLastModified(new Date(System.currentTimeMillis())); g.setName("new group"); groupRepository.saveAndFlush(g); Collection<Group> list = new LinkedList<>(); list.add(g); u.setGroups(list); u.setLastModified(new Date(System.currentTimeMillis())); userRepository.saveAndFlush(u); assertEquals(userRepository.getOne(u.getId()), u); User userFromDB = userRepository.getOne(u.getId()); Collection<Group> groupsFromDB = userFromDB.getGroups(); assertEquals(g.getId(), groupsFromDB.iterator().next().getId()); Role r = new Role(); r.setId(UUID.randomUUID().toString()); r.setName("ADMIN"); roleRepository.save(r); assertEquals(r, roleRepository.getOne(r.getId())); Membership memb = new Membership(); memb.setId(UUID.randomUUID().toString()); memb.setGroup(g); memb.setRole(r); Collection<Membership> memberships = new LinkedList<>(); memberships.add(memb); u.setMemberships(memberships); userRepository.saveAndFlush(u); assertEquals(memb, userRepository.getOne(u.getId()).getMemberships().iterator().next()); } @Test public void testAdditionalAttributes() { String user_id = UUID.randomUUID().toString(); User u = new User(); u.setId(user_id); u.setLastModified(new Date(System.currentTimeMillis())); userRepository.saveAndFlush(u); User res = userRepository.getOne(u.getId()); assertEquals(res, u); userRepository.save(u); User u2 = userRepository.getOne(u.getId()); //only one time in the loop... } @Test public void testDeleteUser() { String user_id = UUID.randomUUID().toString(); User u = new User(); u.setId(user_id); u.setLastModified(new Date(System.currentTimeMillis())); userRepository.saveAndFlush(u); User res = userRepository.getOne(u.getId()); assertEquals(res, u); userRepository.delete(u); try { userRepository.getOne(user_id); fail(); } catch (EntityNotFoundException ex) { assertTrue(true); } } }