package org.js.model.workflow.test.rewrite; import org.eclipse.emf.common.util.EList; import org.js.model.rbac.AccessControlModel; import org.js.model.rbac.Group; import org.js.model.rbac.Role; import org.js.model.rbac.impl.RbacFactoryImpl; import org.js.model.workflow.util.AccessControlModelUtil; import org.junit.Assert; import org.junit.Test; public class AccessControlModelRemoveGroupTest { AccessControlModel accessControlModel; Role r1, r2, r3, r4, r5; Group g1, g2, g3, g6; /** * the dummy model represents a subset of an access control model containing roles and groups of roles. * * R2(G2) / R1(G1) \ R3(G3)-R4 * * G6 group without owner and members R6 role without relation to a group * */ private void createDummyModel() { accessControlModel = RbacFactoryImpl.eINSTANCE.createAccessControlModel(); r1 = createRole("R1"); r2 = createRole("R2"); r3 = createRole("R3"); r4 = createRole("R4"); r5 = createRole("R5"); g1 = createGroup("G1", r1); g1.getMembers().add(r2); g1.getMembers().add(r3); g2 = createGroup("G2", r2); g3 = createGroup("G3", r3); g3.getMembers().add(r4); g6 = createGroup("G6", null); } private Group createGroup(String id, Role owner) { Group g = RbacFactoryImpl.eINSTANCE.createGroup(); g.setId(id); g.setName(id); g.setOwner(owner); accessControlModel.getGroups().add(g); return g; } private Role createRole(String id) { Role r = RbacFactoryImpl.eINSTANCE.createRole(); r.setId(id); r.setName(id); accessControlModel.getRoles().add(r); return r; } @Test public void testRemoveRole1() { createDummyModel(); AccessControlModelUtil.removeRoleGroupAndRole(r1, accessControlModel); EList<Role> roles = accessControlModel.getRoles(); EList<Group> groups = accessControlModel.getGroups(); Assert.assertTrue(roles.size() == 1); Assert.assertTrue(roles.contains(r5)); Assert.assertTrue(groups.size() == 1); Assert.assertTrue(groups.contains(g6)); } @Test public void testRemoveRole2() { createDummyModel(); AccessControlModelUtil.removeRoleGroupAndRole(r2, accessControlModel); EList<Role> roles = accessControlModel.getRoles(); EList<Group> groups = accessControlModel.getGroups(); Assert.assertTrue(roles.size() == 4); Assert.assertTrue(roles.contains(r5)); Assert.assertTrue(roles.contains(r1)); Assert.assertTrue(roles.contains(r3)); Assert.assertTrue(roles.contains(r4)); Assert.assertTrue(groups.size() == 3); Assert.assertTrue(groups.contains(g6)); Assert.assertTrue(groups.contains(g1)); Assert.assertTrue(groups.contains(g3)); } @Test public void testRemoveRole3() { createDummyModel(); AccessControlModelUtil.removeRoleGroupAndRole(r3, accessControlModel); EList<Role> roles = accessControlModel.getRoles(); EList<Group> groups = accessControlModel.getGroups(); Assert.assertTrue(roles.size() == 3); Assert.assertTrue(roles.contains(r5)); Assert.assertTrue(roles.contains(r1)); Assert.assertTrue(roles.contains(r2)); Assert.assertTrue(groups.size() == 3); Assert.assertTrue(groups.contains(g6)); Assert.assertTrue(groups.contains(g1)); Assert.assertTrue(groups.contains(g2)); } @Test public void testRemoveRole5() { createDummyModel(); AccessControlModelUtil.removeRoleGroupAndRole(r5, accessControlModel); EList<Role> roles = accessControlModel.getRoles(); EList<Group> groups = accessControlModel.getGroups(); Assert.assertTrue(roles.size() == 4); Assert.assertTrue(roles.contains(r1)); Assert.assertTrue(roles.contains(r2)); Assert.assertTrue(roles.contains(r3)); Assert.assertTrue(roles.contains(r4)); Assert.assertTrue(groups.size() == 4); Assert.assertTrue(groups.contains(g6)); Assert.assertTrue(groups.contains(g1)); Assert.assertTrue(groups.contains(g2)); Assert.assertTrue(groups.contains(g3)); } }