You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by vt...@apache.org on 2004/03/11 00:17:31 UTC
svn commit: rev 9343 - in incubator/directory/janus/trunk/sandbox/src: java/org/apache/janus/script/xml test/org/apache/janus/script/xml
Author: vtence
Date: Wed Mar 10 15:17:29 2004
New Revision: 9343
Modified:
incubator/directory/janus/trunk/sandbox/src/java/org/apache/janus/script/xml/Dom4JRoleManagerBuilder.java
incubator/directory/janus/trunk/sandbox/src/test/org/apache/janus/script/xml/Dom4JRoleManagerBuilderTest.java
Log:
o Resolved DIR-45
Modified: incubator/directory/janus/trunk/sandbox/src/java/org/apache/janus/script/xml/Dom4JRoleManagerBuilder.java
==============================================================================
--- incubator/directory/janus/trunk/sandbox/src/java/org/apache/janus/script/xml/Dom4JRoleManagerBuilder.java (original)
+++ incubator/directory/janus/trunk/sandbox/src/java/org/apache/janus/script/xml/Dom4JRoleManagerBuilder.java Wed Mar 10 15:17:29 2004
@@ -16,8 +16,8 @@
*/
package org.apache.janus.script.xml;
-import org.apache.janus.authorization.role.MutableRoleManager;
import org.apache.janus.authentication.realm.UsernamePrincipal;
+import org.apache.janus.authorization.role.MutableRoleManager;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
@@ -25,9 +25,9 @@
import java.io.IOException;
import java.io.Reader;
-import java.util.List;
-import java.util.Iterator;
import java.security.Principal;
+import java.util.Iterator;
+import java.util.List;
/**
* <strong>Warning:</strong> Document is assumed to be valid.
@@ -47,6 +47,15 @@
{
Element root = m_doc.getRootElement();
addRoles( roleManager, root );
+ populateRoles( roleManager, root );
+ }
+
+ private Document readDocument( Reader reader ) throws DocumentException
+ {
+ SAXReader xmlReader = new SAXReader();
+ Document doc = xmlReader.read( reader );
+
+ return doc;
}
private void addRoles( MutableRoleManager roleManager, Element roles )
@@ -58,8 +67,20 @@
final Element element = (Element) it.next();
String roleName = element.attributeValue( "name" );
roleManager.addRole( roleName );
+ }
+ }
- addUsersToRole( roleManager, roleName, element);
+ private void populateRoles( MutableRoleManager roleManager, Element roles )
+ {
+ List roleList = roles.elements( "role" );
+
+ for ( Iterator it = roleList.iterator(); it.hasNext(); )
+ {
+ final Element element = (Element) it.next();
+ String roleName = element.attributeValue( "name" );
+
+ addUsersToRole( roleManager, roleName, element );
+ addSubRolesToRole( roleManager, roleName, element );
}
}
@@ -74,15 +95,20 @@
final Element element = (Element) it.next();
String username = element.attributeValue( "username" );
Principal user = new UsernamePrincipal( username );
- roleManager.addPrincipalToRole( roleName, user );
+ roleManager.addPrincipalToRole( roleName, user );
}
}
- private Document readDocument( Reader reader ) throws DocumentException
+ private void addSubRolesToRole( MutableRoleManager roleManager, String roleName, Element role )
{
- SAXReader xmlReader = new SAXReader();
- Document doc = xmlReader.read( reader );
+ List roleList = role.elements( "role-ref" );
- return doc;
+ for ( Iterator it = roleList.iterator(); it.hasNext(); )
+ {
+ Element subRole = (Element) it.next();
+ String subRoleName = subRole.attributeValue( "name" );
+
+ roleManager.addSubRole( roleName, subRoleName );
+ }
}
}
Modified: incubator/directory/janus/trunk/sandbox/src/test/org/apache/janus/script/xml/Dom4JRoleManagerBuilderTest.java
==============================================================================
--- incubator/directory/janus/trunk/sandbox/src/test/org/apache/janus/script/xml/Dom4JRoleManagerBuilderTest.java (original)
+++ incubator/directory/janus/trunk/sandbox/src/test/org/apache/janus/script/xml/Dom4JRoleManagerBuilderTest.java Wed Mar 10 15:17:29 2004
@@ -24,37 +24,26 @@
import java.io.StringReader;
/**
+ * test: duplicate role
+ * test: duplicate principal in role
+ * test: unknown role
+ * test: unkwnow sub-role
+ * test: role circular dependency
+ *
* @author <a href="mailto:directory-dev@incubator.apache.org">Apache Directory Project</a>
*/
public class Dom4JRoleManagerBuilderTest extends junit.framework.TestCase
{
+ private Mock m_mockRoleManager;
+
public static void main( String[] args )
{
junit.textui.TestRunner.run( Dom4JRoleManagerBuilderTest.class );
}
- public void testEmptyRolesBuild() throws Exception
- {
- Dom4JRoleManagerBuilder builder = new Dom4JRoleManagerBuilder(
- new StringReader( emptyRolesDefinition() ) );
-
- Mock mockRoleManager = new Mock( MutableRoleManager.class );
- mockRoleManager.expectAndReturn( "addRole", "member", true );
- mockRoleManager.expectAndReturn( "addRole", "vip", true );
-
- builder.buildRoleManager( (MutableRoleManager) mockRoleManager.proxy() );
-
- mockRoleManager.verify();
- }
-
- private String emptyRolesDefinition()
+ protected void setUp() throws Exception
{
- String content = "<?xml version=\"1.0\"?>\n"
- + "<roles>\n"
- + " <role name=\"member\"/>\n"
- + " <role name=\"vip\"/>\n"
- + "</roles>";
- return content;
+ m_mockRoleManager = new Mock( MutableRoleManager.class );
}
public void testSimpleRolesBuild() throws Exception
@@ -62,17 +51,17 @@
Dom4JRoleManagerBuilder builder = new Dom4JRoleManagerBuilder(
new StringReader( simpleRolesDefinition() ) );
- Mock mockRoleManager = new Mock( MutableRoleManager.class );
- mockRoleManager.matchAndReturn( "addRole", C.ANY_ARGS, true );
+ m_mockRoleManager.expectAndReturn( "addRole", "member", true );
+ m_mockRoleManager.expectAndReturn( "addRole", "vip", true );
- mockRoleManager.expectAndReturn( "addPrincipalToRole",
+ m_mockRoleManager.expectAndReturn( "addPrincipalToRole",
C.args( C.eq( "member" ), C.eq( john() ) ), true );
- mockRoleManager.expectAndReturn( "addPrincipalToRole",
+ m_mockRoleManager.expectAndReturn( "addPrincipalToRole",
C.args( C.eq( "member" ), C.eq( jane() ) ), true );
- builder.buildRoleManager( (MutableRoleManager) mockRoleManager.proxy() );
+ builder.buildRoleManager( (MutableRoleManager) m_mockRoleManager.proxy() );
- mockRoleManager.verify();
+ m_mockRoleManager.verify();
}
private String simpleRolesDefinition()
@@ -83,6 +72,7 @@
+ " <user username=\"john\"/>"
+ " <user username=\"jane\"/>"
+ " </role>\n"
+ + " <role name=\"vip\"/>\n"
+ "</roles>";
return content;
}
@@ -95,5 +85,37 @@
private UsernamePrincipal jane()
{
return new UsernamePrincipal( "jane" );
+ }
+
+ public void testSubRolesBuild() throws Exception
+ {
+ Dom4JRoleManagerBuilder builder = new Dom4JRoleManagerBuilder(
+ new StringReader( subRolesDefinition() ) );
+
+ m_mockRoleManager = new Mock( MutableRoleManager.class );
+ m_mockRoleManager.matchAndReturn( "addRole", C.ANY_ARGS, true);
+
+ m_mockRoleManager.expectAndReturn( "addSubRole",
+ C.args( C.eq( "member" ), C.eq( "vip" ) ), true );
+ m_mockRoleManager.expectAndReturn( "addSubRole",
+ C.args( C.eq( "member" ), C.eq( "guest" ) ), true );
+
+ builder.buildRoleManager( (MutableRoleManager) m_mockRoleManager.proxy() );
+
+ m_mockRoleManager.verify();
+ }
+
+ private String subRolesDefinition()
+ {
+ String content = "<?xml version=\"1.0\"?>\n"
+ + "<roles>\n"
+ + " <role name=\"member\">\n"
+ + " <role-ref name=\"vip\"/>"
+ + " <role-ref name=\"guest\"/>"
+ + " </role>\n"
+ + " <role name=\"vip\"/>\n"
+ + " <role name=\"guest\"/>\n"
+ + "</roles>";
+ return content;
}
}