package edu.internet2.middleware.grouper; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.Transaction; import org.cagrid.gridgrouper.model.GroupDescriptor; import org.cagrid.gridgrouper.model.GroupPrivilegeType; import org.cagrid.gridgrouper.model.MemberDescriptor; import org.cagrid.gridgrouper.model.MemberFilter; import org.cagrid.gridgrouper.model.StemDescriptor; import org.cagrid.gridgrouper.service.impl.testutils.Utils; import org.cagrid.gridgrouper.service.impl.tools.GridGrouperBootstrapper; import org.junit.Test; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public class TestGrouper extends GrouperBaseTest { // public static final String SUPER_USER = "/O=OSU/OU=BMI/OU=caGrid/OU=Dorian/OU=cagrid05/OU=IdP [1]/CN=super admin"; public static final String SUPER_USER = "/O=caBIG/OU=caGrid/OU=Training/OU=Dorian/CN=jmgeorge"; public static final String GROUPER_ALL = "GrouperAll"; private String USER_A = "/O=OSU/OU=BMI/OU=caGrid/OU=Dorian/OU=cagrid05/OU=IdP [1]/CN=user a"; private String USER_Aadmin = "/O=OSU/OU=BMI/OU=caGrid/OU=Dorian/OU=cagrid05/OU=IdP [1]/CN=user aadmin"; private String USER_B = "/O=OSU/OU=BMI/OU=caGrid/OU=Dorian/OU=cagrid05/OU=IdP [1]/CN=user b"; private String USER_Badmin = "/O=OSU/OU=BMI/OU=caGrid/OU=Dorian/OU=cagrid05/OU=IdP [1]/CN=user badmin"; private String USER_C = "/O=OSU/OU=BMI/OU=caGrid/OU=Dorian/OU=cagrid05/OU=IdP [1]/CN=user c"; private String USER_D = "/O=OSU/OU=BMI/OU=caGrid/OU=Dorian/OU=cagrid05/OU=IdP [1]/CN=user d"; private void clearMembershipRequestsTable() throws HibernateException { Session hs = GridGrouperHibernateHelper.getSession(); Transaction tx = hs.beginTransaction(); hs.delete("from MembershipRequestHistory"); hs.delete("from MembershipRequest"); tx.commit(); hs.close(); } @Test public void testAdminGetPrivileges() { try { GroupDescriptor grp = initialGroupAndRequestSetup(); grouper.addMember(SUPER_USER, Utils.getGroupIdentifier(grp), USER_Aadmin); grouper.grantGroupPrivilege(SUPER_USER, Utils.getGroupIdentifier(grp), USER_Aadmin, GroupPrivilegeType.ADMIN); grouper.addMember(USER_Aadmin, Utils.getGroupIdentifier(grp), USER_A); grouper.addMember(USER_Aadmin, Utils.getGroupIdentifier(grp), USER_B); grouper.addMember(USER_Aadmin, Utils.getGroupIdentifier(grp), USER_C); grouper.revokeGroupPrivilege(USER_Aadmin, Utils.getGroupIdentifier(grp), "GrouperAll", GroupPrivilegeType.READ); List<MemberDescriptor> members = grouper.getMembers(USER_Badmin, Utils.getGroupIdentifier(grp), MemberFilter.ALL); assertEquals(0, members.size()); grouper.grantGroupPrivilege(USER_Aadmin, Utils.getGroupIdentifier(grp), "GrouperAll", GroupPrivilegeType.READ); members = grouper.getMembers(USER_Badmin, Utils.getGroupIdentifier(grp), MemberFilter.ALL); assertEquals(4, members.size()); } catch (Exception e) { fail(e.getMessage()); } } private GroupDescriptor initialGroupAndRequestSetup() throws Exception { GridGrouperBootstrapper.addAdminMember(SUPER_USER); grouper.getStem(SUPER_USER, Utils.getRootStemIdentifier()); String testStem = "TestStem"; StemDescriptor test = grouper.addChildStem(SUPER_USER, Utils.getRootStemIdentifier(), testStem, testStem); final String groupExtension = "mygroup"; final String groupDisplayExtension = "My Group"; GroupDescriptor grp = createAndCheckGroup(test, groupExtension, groupDisplayExtension, 1); final String subGroupExtension = "mysubgroup"; final String subGroupDisplayExtension = "My Sub Group"; createAndCheckGroup(test, subGroupExtension, subGroupDisplayExtension, 2); return grp; } protected GroupDescriptor createAndCheckGroup(StemDescriptor stem, String extension, String displayExtension, int childGroupCount) throws Exception { GroupDescriptor grp = grouper.addChildGroup(SUPER_USER, Utils.getStemIdentifier(stem), extension, displayExtension); return grp; } }