package de.juwimm.cms.test.hibernate; import java.util.ArrayList; import java.util.Collection; import org.easymock.EasyMock; import org.junit.Assert; import org.springframework.beans.factory.annotation.Autowired; import de.juwimm.cms.authorization.model.GroupHbm; import de.juwimm.cms.authorization.model.GroupHbmDao; import de.juwimm.cms.authorization.model.GroupHbmImpl; import de.juwimm.cms.authorization.model.RoleHbm; import de.juwimm.cms.authorization.model.RoleHbmDao; import de.juwimm.cms.authorization.model.RoleHbmImpl; import de.juwimm.cms.authorization.model.UserHbm; import de.juwimm.cms.authorization.model.UserHbmDao; import de.juwimm.cms.authorization.model.UserHbmDaoImpl; import de.juwimm.cms.authorization.model.UserHbmImpl; import de.juwimm.cms.model.SiteHbm; import de.juwimm.cms.model.SiteHbmDao; import de.juwimm.cms.model.SiteHbmImpl; import de.juwimm.cms.model.UnitHbm; import de.juwimm.cms.model.UnitHbmDao; import de.juwimm.cms.model.UnitHbmImpl; public class UserDaoTest extends HbmTestImpl { @Autowired UserHbmDao userDao; @Autowired SiteHbmDao siteDao; RoleHbmDao roleDaoMock; GroupHbmDao groupDaoMock; UnitHbmDao unitDaoMock; public void initializeServiceBeans() { // TODO Auto-generated method stub } @Override protected void onSetUp() throws Exception { super.onSetUp(); mockAuthetication(); SiteHbm site = new SiteHbmImpl(); site.setSiteId(1); site.setName("testSite"); insertSite(site); insertUser("testUser", 1); groupDaoMock = EasyMock.createMock(GroupHbmDao.class); ((UserHbmDaoImpl) userDao).setGroupHbmDao(groupDaoMock); unitDaoMock = EasyMock.createMock(UnitHbmDao.class); ((UserHbmDaoImpl) userDao).setUnitHbmDao(unitDaoMock); } /** * Test Create * expect: set userId to lower case */ public void testCreate() { UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); try { user = userDao.create(user); Assert.assertNotNull(user); Assert.assertEquals("testuser", user.getUserId()); } catch (Exception e) { Assert.assertTrue(false); } } /** * Test Create * expect: assign userId */ public void testCreate1() { UserHbm user = new UserHbmImpl(); try { user = userDao.create(user); Assert.assertNotNull(user); Assert.assertNotNull(user.getUserId()); } catch (Exception e) { Assert.assertTrue(false); } } /** * Test GetGroups4ActiveSite * expect: user is masterRoot so he gets all the groups */ public void testGetGroups4ActiveSite() { SiteHbm site = new SiteHbmImpl(); site.setSiteId(1); UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); user.setActiveSite(site); user.setMasterRoot(true); GroupHbm group1 = new GroupHbmImpl(); group1.setGroupId(1); GroupHbm group2 = new GroupHbmImpl(); group2.setGroupId(2); Collection<GroupHbm> groups = new ArrayList<GroupHbm>(); groups.add(group1); groups.add(group2); try { EasyMock.expect(groupDaoMock.findAll(EasyMock.eq(1))).andReturn(groups); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(groupDaoMock); try { Collection result = userDao.getGroups4ActiveSite(user); Assert.assertEquals(2, result.size()); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.verify(groupDaoMock); } /** * Test GetGroups4ActiveSite * expect: user is not masterRoot so he gets the groups for user and site */ public void testGetGroups4ActiveSite1() { SiteHbm site = new SiteHbmImpl(); site.setSiteId(1); UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); user.setActiveSite(site); user.setMasterRoot(false); GroupHbm group1 = new GroupHbmImpl(); group1.setGroupId(1); GroupHbm group2 = new GroupHbmImpl(); group2.setGroupId(2); Collection<GroupHbm> groups = new ArrayList<GroupHbm>(); groups.add(group1); groups.add(group2); try { EasyMock.expect(groupDaoMock.findByUserAndSite(EasyMock.eq("testUser"), EasyMock.eq(1))).andReturn(groups); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(groupDaoMock); try { Collection result = userDao.getGroups4ActiveSite(user); Assert.assertEquals(2, result.size()); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.verify(groupDaoMock); } /** * Test GetUnits4ActiveSite * expect: user is master root so return all units for site */ public void testGetUnits4ActiveSite() { SiteHbm site = siteDao.load(1); UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); user.setActiveSite(site); user.setMasterRoot(true); Collection collection = new ArrayList<UnitHbm>(); UnitHbm unit = new UnitHbmImpl(); unit.setUnitId(1); unit.setName("testName"); collection.add(unit); try { EasyMock.expect(unitDaoMock.findAll(EasyMock.eq(site.getSiteId()))).andReturn(collection); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(unitDaoMock); try { Collection result = userDao.getUnits4ActiveSite(user); Assert.assertNotNull(result); Assert.assertEquals(1, result.size()); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.verify(unitDaoMock); } /** * Test GetUnits4ActiveSite * expect: user is not master root or siteRoot so return all units for user and site */ public void testGetUnits4ActiveSite1() { SiteHbm site = siteDao.load(1); UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); user.setActiveSite(site); user.setMasterRoot(false); Collection collection = new ArrayList<UnitHbm>(); UnitHbm unit = new UnitHbmImpl(); unit.setUnitId(1); unit.setName("testName"); collection.add(unit); try { EasyMock.expect(unitDaoMock.findByUserAndSite(EasyMock.eq("testUser"), EasyMock.eq(site.getSiteId()))).andReturn(collection); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(unitDaoMock); try { Collection result = userDao.getUnits4ActiveSite(user); Assert.assertNotNull(result); Assert.assertEquals(1, result.size()); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.verify(unitDaoMock); } /** * Test isInRole * expect: for a user with siteRoot and unitAdmin when interrogated for siteRoot to return true * for MasterRoot to have rights regardless of the sent as parameter role */ public void testIsInRole() { UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); user.setMasterRoot(false); SiteHbm site = siteDao.load(1); UserHbm userMasterRoot = new UserHbmImpl(); userMasterRoot.setUserId("testUser"); userMasterRoot.setMasterRoot(true); Collection roles = new ArrayList<RoleHbm>(); RoleHbm role1 = new RoleHbmImpl(); RoleHbm role2 = new RoleHbmImpl(); role1.setRoleId("siteRoot"); role2.setRoleId("unitAdmin"); roles.add(role1); roles.add(role2); roleDaoMock = EasyMock.createMock(RoleHbmDao.class); ((UserHbmDaoImpl) userDao).setRoleHbmDao(roleDaoMock); try { EasyMock.expect(roleDaoMock.findByUserAndSite("testUser", 1)).andReturn(roles); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(roleDaoMock); try { boolean result = userDao.isInRole(user, "siteRoot", site); Assert.assertTrue(result); } catch (Exception e) { Assert.assertTrue(false); } try { boolean result = userDao.isInRole(userMasterRoot, "siteRoot", site); Assert.assertTrue(result); } catch (Exception e) { Assert.assertTrue(false); } } /** * Test isInUnit * expect: for a user who is masterRoot return true * for a user who is site_root return true * for a user who is assigned to the unit sent as parameter return true * */ public void testIsInUnit() { Collection units = new ArrayList<UnitHbm>(); UnitHbm unit1 = new UnitHbmImpl(); unit1.setUnitId(1); UnitHbm unit2 = new UnitHbmImpl(); unit2.setUnitId(2); units.add(unit1); units.add(unit2); SiteHbm site = siteDao.load(1); UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); user.setMasterRoot(false); user.setActiveSite(site); UserHbm userMasterRoot = new UserHbmImpl(); userMasterRoot.setUserId("testUser"); userMasterRoot.setMasterRoot(true); UserHbm userTestUnits = new UserHbmImpl(); userTestUnits.setUserId("testUserUnits"); userTestUnits.setUnits(units); userTestUnits.setMasterRoot(false); userTestUnits.setActiveSite(site); Collection roles = new ArrayList<RoleHbm>(); RoleHbm role1 = new RoleHbmImpl(); RoleHbm role2 = new RoleHbmImpl(); role1.setRoleId("siteRoot"); role2.setRoleId("unitAdmin"); roles.add(role1); roles.add(role2); roleDaoMock = EasyMock.createMock(RoleHbmDao.class); ((UserHbmDaoImpl) userDao).setRoleHbmDao(roleDaoMock); Collection emptyRoles = new ArrayList<RoleHbm>(); try { EasyMock.expect(roleDaoMock.findByUserAndSite("testUser", 1)).andReturn(roles); EasyMock.expect(roleDaoMock.findByUserAndSite("testUserUnits", 1)).andReturn(emptyRoles); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(roleDaoMock); /**test for MasterRoot*/ try { boolean result = userDao.isInUnit(1, userMasterRoot); Assert.assertTrue(result); } catch (Exception e) { Assert.assertTrue(false); } /**test for site_root*/ try { boolean result = userDao.isInUnit(1, user); Assert.assertTrue(result); } catch (Exception e) { Assert.assertTrue(false); } /**test in the same unit*/ try { boolean result = userDao.isInUnit(1, userTestUnits); Assert.assertTrue(result); } catch (Exception e) { Assert.assertTrue(false); } } }