package org.bubblecloud.ilves.security; import org.bubblecloud.ilves.model.Company; import org.bubblecloud.ilves.model.Group; import org.bubblecloud.ilves.model.PostalAddress; import org.bubblecloud.ilves.model.User; import org.bubblecloud.ilves.util.TestUtil; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import javax.persistence.EntityManager; import java.util.List; /** * @author Tommi Laukkanen * */ public final class UserTest { /** The entity manager for test. */ private EntityManager entityManager; @Before public void setUp() throws Exception { TestUtil.before(); entityManager = TestUtil.getEntityManagerFactory().createEntityManager(); } @After public void after() { TestUtil.after(); } /** * Tests User persistence. */ @Test public void testPersistence() { final PostalAddress invoicingAddress = new PostalAddress("", "", "", "", "", ""); final PostalAddress deliveryAddress = new PostalAddress("", "", "", "", "", ""); entityManager.persist(invoicingAddress); entityManager.persist(deliveryAddress); final Company owner = new Company("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", invoicingAddress, deliveryAddress); entityManager.getTransaction().begin(); entityManager.persist(owner); entityManager.getTransaction().commit(); final Company loadedCompany = entityManager.find(Company.class, owner.getCompanyId()); Assert.assertNotNull(loadedCompany); final Group group = new Group(owner, "test-group", "Test Group"); UserDao.addGroup(entityManager, group); Assert.assertNotNull(entityManager.find(Group.class, group.getGroupId())); final Group loadedGroup = UserDao.getGroup(entityManager, owner, "test-group"); Assert.assertEquals(group, loadedGroup); final Group group2 = new Group(owner, "test-group-2", "Test Group"); UserDao.addGroup(entityManager, group2); final User user = new User(owner, "Matti", "Meikäläinen", "matti.meikalainen@biz.eelis.biz", "+358 40 12312313", ""); UserDao.addUser(entityManager, user, group); final User loadedUser = UserDao.getUser(entityManager, owner, "matti.meikalainen@biz.eelis.biz"); Assert.assertEquals(user, loadedUser); UserDao.addGroupMember(entityManager, group2, user); final List<Group> userGroups = UserDao.getUserGroups(entityManager, owner, user); Assert.assertEquals(2, userGroups.size()); Assert.assertEquals(group, userGroups.get(0)); Assert.assertEquals(group2, userGroups.get(1)); UserDao.addUserPrivilege(entityManager, user, "test-key", "test-data"); UserDao.addGroupPrivilege(entityManager, group, "test-key", "test-data"); Assert.assertTrue(UserDao.hasUserPrivilege(entityManager, user, "test-key", "test-data")); Assert.assertTrue(UserDao.hasGroupPrivilege(entityManager, group, "test-key", "test-data")); Assert.assertEquals(2, UserDao.listPrivileges(entityManager, "test-key", "test-data").size()); UserDao.removeUserPrivilege(entityManager, user, "test-key", "test-data"); UserDao.removeGroupPrivilege(entityManager, group, "test-key", "test-data"); Assert.assertFalse(UserDao.hasUserPrivilege(entityManager, user, "test-key", "test-data")); Assert.assertFalse(UserDao.hasGroupPrivilege(entityManager, group, "test-key", "test-data")); UserDao.removeGroupMember(entityManager, group, user); UserDao.removeGroupMember(entityManager, group2, user); UserDao.removeUser(entityManager, user); Assert.assertNull(UserDao.getUser(entityManager, owner, "matti.meikalainen@biz.eelis.biz")); UserDao.removeGroup(entityManager, group); Assert.assertNull(UserDao.getGroup(entityManager, owner, "test-group")); } }