You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2009/09/02 03:48:55 UTC
svn commit: r810332 -
/portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestHierarchicalGroups.java
Author: rwatler
Date: Wed Sep 2 01:48:55 2009
New Revision: 810332
URL: http://svn.apache.org/viewvc?rev=810332&view=rev
Log:
commit hierarchical groups test case
Added:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestHierarchicalGroups.java
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestHierarchicalGroups.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestHierarchicalGroups.java?rev=810332&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestHierarchicalGroups.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestHierarchicalGroups.java Wed Sep 2 01:48:55 2009
@@ -0,0 +1,210 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.security;
+
+import java.util.List;
+
+import javax.security.auth.Subject;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test construction and application of hierarchical groups.
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class TestHierarchicalGroups extends AbstractSecurityTestcase
+{
+ /**
+ * Test runs all test*() methods by default.
+ *
+ * @return test suite definition.
+ */
+ public static Test suite()
+ {
+ return new TestSuite(TestHierarchicalGroups.class);
+ }
+
+ /**
+ * Test case for hierarchical groups.
+ */
+ public void testHierarchicalGroups()
+ {
+ try
+ {
+ Group organization = null;
+ if (gms.groupExists("organization"))
+ {
+ organization = gms.getGroup("organization");
+ }
+ else
+ {
+ organization = gms.addGroup("organization");
+ }
+ Role employee = null;
+ if (rms.roleExists("employee"))
+ {
+ employee = rms.getRole("employee");
+ }
+ else
+ {
+ employee = rms.addRole("employee");
+ }
+ List<Role> organizationRoles = rms.getRolesInGroup(organization.getName());
+ if (organizationRoles.isEmpty())
+ {
+ rms.addRoleToGroup(employee.getName(), organization.getName());
+ organizationRoles = rms.getRolesInGroup(organization.getName());
+ }
+ assertTrue("employee is associated with organization", organizationRoles.contains(employee));
+
+ Group department = null;
+ if (gms.groupExists("department"))
+ {
+ department = gms.getGroup("department");
+ }
+ else
+ {
+ department = gms.addGroup("department");
+ }
+ List<Group> departmentOwnerGroups = gms.getGroupsAssociatedFrom(department, JetspeedPrincipalAssociationType.IS_A);
+ if (departmentOwnerGroups.isEmpty())
+ {
+ gms.addGroupToGroup(department, organization, JetspeedPrincipalAssociationType.IS_A);
+ departmentOwnerGroups = gms.getGroupsAssociatedFrom(department, JetspeedPrincipalAssociationType.IS_A);
+ }
+ assertTrue("department is part of organization", departmentOwnerGroups.contains(organization));
+ Role departmentMember = null;
+ if (rms.roleExists("department-member"))
+ {
+ departmentMember = rms.getRole("department-member");
+ }
+ else
+ {
+ departmentMember = rms.addRole("department-member");
+ }
+ List<Role> departmentRoles = rms.getRolesInGroup(department.getName());
+ if (departmentRoles.isEmpty())
+ {
+ rms.addRoleToGroup(departmentMember.getName(), department.getName());
+ departmentRoles = rms.getRolesInGroup(department.getName());
+ }
+ assertTrue("department-member is associated with department", departmentRoles.contains(departmentMember));
+
+ Group team = null;
+ if (gms.groupExists("team"))
+ {
+ team = gms.getGroup("team");
+ }
+ else
+ {
+ team = gms.addGroup("team");
+ }
+ List<Group> teamOwnerGroups = gms.getGroupsAssociatedFrom(team, JetspeedPrincipalAssociationType.IS_A);
+ if (teamOwnerGroups.isEmpty())
+ {
+ gms.addGroupToGroup(team, department, JetspeedPrincipalAssociationType.IS_A);
+ teamOwnerGroups = gms.getGroupsAssociatedFrom(team, JetspeedPrincipalAssociationType.IS_A);
+ }
+ assertTrue("team is part of department", teamOwnerGroups.contains(department));
+ Role teamMember = null;
+ if (rms.roleExists("team-member"))
+ {
+ teamMember = rms.getRole("team-member");
+ }
+ else
+ {
+ teamMember = rms.addRole("team-member");
+ }
+ List<Role> teamRoles = rms.getRolesInGroup(team.getName());
+ if (teamRoles.isEmpty())
+ {
+ rms.addRoleToGroup(teamMember.getName(), team.getName());
+ teamRoles = rms.getRolesInGroup(team.getName());
+ }
+ assertTrue("team-member is associated with team", teamRoles.contains(teamMember));
+
+ User person = null;
+ if (ums.userExists("person"))
+ {
+ person = ums.getUser("person");
+ }
+ else
+ {
+ person = ums.addUser("person");
+ }
+ List<Group> personGroups = gms.getGroupsForUser(person.getName());
+ if (personGroups.isEmpty())
+ {
+ gms.addUserToGroup(person.getName(), department.getName());
+ personGroups = gms.getGroupsForUser(person.getName());
+ }
+ assertTrue("person is a member of department", personGroups.contains(department));
+
+ Subject subject = ums.getSubject(person);
+ assertTrue("person in department", (SubjectHelper.getPrincipal(subject, Group.class, department.getName()) != null));
+ assertTrue("person in department-member", (SubjectHelper.getPrincipal(subject, Role.class, departmentMember.getName()) != null));
+ assertTrue("person in organization", (SubjectHelper.getPrincipal(subject, Group.class, organization.getName()) != null));
+ assertTrue("person in employee", (SubjectHelper.getPrincipal(subject, Role.class, employee.getName()) != null));
+ assertFalse("person in team", (SubjectHelper.getPrincipal(subject, Group.class, team.getName()) != null));
+ assertFalse("person in team-member", (SubjectHelper.getPrincipal(subject, Role.class, teamMember.getName()) != null));
+ }
+ catch (SecurityException se)
+ {
+ throw new RuntimeException("Unexpected security exception: "+se, se);
+ }
+ finally
+ {
+ try
+ {
+ if (ums.userExists("person"))
+ {
+ ums.removeUser("person");
+ }
+ if (rms.roleExists("team-member"))
+ {
+ rms.removeRole("team-member");
+ }
+ if (gms.groupExists("team"))
+ {
+ gms.removeGroup("team");
+ }
+ if (rms.roleExists("department-member"))
+ {
+ rms.removeRole("department-member");
+ }
+ if (gms.groupExists("department"))
+ {
+ gms.removeGroup("department");
+ }
+ if (rms.roleExists("employee"))
+ {
+ rms.removeRole("employee");
+ }
+ if (gms.groupExists("organization"))
+ {
+ gms.removeGroup("organization");
+ }
+ }
+ catch (SecurityException se)
+ {
+ }
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org