Author: mmerz Date: Tue Dec 7 16:38:01 2004 New Revision: 111183 URL: http://svn.apache.org/viewcvs?view=rev&rev=111183 Log: More additions to security, incl. first drt.
Contributor: Wolfgang Added: incubator/beehive/trunk/wsm/drt/tests/beehive-role.xml incubator/beehive/trunk/wsm/drt/tests/org/apache/beehive/wsm/axis/security/ incubator/beehive/trunk/wsm/drt/tests/org/apache/beehive/wsm/axis/security/MemoryUserListTest.java Modified: incubator/beehive/trunk/wsm/drt/build.xml incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/security/model/MemoryGroupImpl.java Modified: incubator/beehive/trunk/wsm/drt/build.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/drt/build.xml?view=diff&rev=111183&p1=incubator/beehive/trunk/wsm/drt/build.xml&r1=111182&p2=incubator/beehive/trunk/wsm/drt/build.xml&r2=111183 ============================================================================== --- incubator/beehive/trunk/wsm/drt/build.xml (original) +++ incubator/beehive/trunk/wsm/drt/build.xml Tue Dec 7 16:38:01 2004 @@ -44,6 +44,7 @@ <include name="jaxrpc.jar"/> <include name="commons-logging.jar"/> <include name="commons-discovery.jar"/> + <include name="commons-codec-1.3.jar"/> <include name="axis-ant.jar"/> <include name="axis.jar"/> </fileset> Added: incubator/beehive/trunk/wsm/drt/tests/beehive-role.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/drt/tests/beehive-role.xml?view=auto&rev=111183 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/wsm/drt/tests/beehive-role.xml Tue Dec 7 16:38:01 2004 @@ -0,0 +1,36 @@ +<beehive-role xmlns="http://www.apache.org/beehive/wsm/axis/security/xmlbeans"> + + <role name="admin"> + <user>michael</user> + </role> + + <role name="engineer"> + <user>jonathan</user> + <user>dims</user> + </role> + + <role name="customer"> + <user>jonathan</user> + <user>wolfgang</user> + <user>chris</user> + </role> + + <role name="support"> + <group>customer_support</group> + </role> + + <group name="customer_support"> + <user>chris</user> + <user>frank</user> + </group> + + <user name="michael" password="1f2dfa567dcf95833eddf7aec167fec7" md5="true" /> + <user name="jonathan" password="jp" /> + <user name="dims" password="dp" /> + <user name="wolfgang" password="wp" /> + <user name="chris" password="cp" /> + <user name="frank" password="fp" /> + <user name="jack" password="jp" /> + +</beehive-role> + Added: incubator/beehive/trunk/wsm/drt/tests/org/apache/beehive/wsm/axis/security/MemoryUserListTest.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/drt/tests/org/apache/beehive/wsm/axis/security/MemoryUserListTest.java?view=auto&rev=111183 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/wsm/drt/tests/org/apache/beehive/wsm/axis/security/MemoryUserListTest.java Tue Dec 7 16:38:01 2004 @@ -0,0 +1,227 @@ +/* + * Copyright 2001-2004 The Apache Software Foundation. + * + * + * Licensed 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.beehive.wsm.axis.security; + + +import java.util.Collection; +import java.util.Iterator; +import java.io.File; + +import junit.framework.TestCase; + +import org.apache.beehive.wsm.axis.security.User; +import org.apache.beehive.wsm.axis.security.Group; +import org.apache.beehive.wsm.axis.security.UserList; +import org.apache.beehive.wsm.axis.security.Role; +import org.apache.beehive.wsm.axis.security.model.MemoryUserImpl; +import org.apache.beehive.wsm.axis.security.model.MemoryGroupImpl; +import org.apache.beehive.wsm.axis.security.model.MemoryRoleImpl; +import org.apache.beehive.wsm.axis.security.model.MemoryUserListImpl; + +import org.apache.beehive.wsm.axis.security.xmlbeans.BeehiveRoleDocument; +import org.apache.beehive.wsm.axis.security.xmlbeans.BeehiveRoleDocument.BeehiveRole; + + +public class MemoryUserListTest extends TestCase { + + private static final String BEEHIVE_HOME = System.getenv("BEEHIVE_HOME"); + + BeehiveRoleDocument brd = null; + UserList userList = null; + + public void setUp() throws Exception { + File f = new File(BEEHIVE_HOME, + "wsm/drt/tests/beehive-role.xml"); + + brd = BeehiveRoleDocument.Factory.parse( f ); + userList = createUserList ( brd ); + } + + public void testRoles() throws Exception { + + assertNotNull( userList.getRole( "admin" ) ); + assertNotNull( userList.getRole( "engineer" ) ); + assertNotNull( userList.getRole( "customer" ) ); + assertNotNull( userList.getRole( "support" ) ); + + } + + public void testGroups() throws Exception { + + Group group = userList.getGroup( "customer_support" ); + assertNotNull( group ); + assertTrue ( group.getRoles().size() == 1 ); + assertNotNull( group.getRole("support") ); + } + + public void testUsers() throws Exception { + + User user = userList.getUser( "michael" ); + assertNotNull ( user ); + assertTrue ( user.getRoles().size() == 1); + assertNotNull ( user.getRole("admin") ); + assertNull ( user.getRole("engineer") ); + assertTrue ( user.getGroups().size() == 0); + assertTrue ( user.authenticate("mp") ); + + user = userList.getUser( "jonathan" ); + assertNotNull ( user ); + assertTrue ( user.getRoles().size() == 2); + assertNotNull ( user.getRole("engineer") ); + assertNotNull ( user.getRole("customer") ); + assertNull ( user.getRole("admin") ); + assertTrue ( user.getGroups().size() == 0); + assertTrue ( user.authenticate("jp") ); + + user = userList.getUser( "dims" ); + assertNotNull ( user ); + assertTrue ( user.getRoles().size() == 1); + assertNotNull ( user.getRole("engineer") ); + assertNull ( user.getRole("admin") ); + assertTrue ( user.getGroups().size() == 0); + assertTrue ( user.authenticate("dp") ); + + user = userList.getUser( "wolfgang" ); + assertNotNull ( user ); + assertTrue ( user.getRoles().size() == 1); + assertNotNull ( user.getRole("customer") ); + assertNull ( user.getRole("admin") ); + assertTrue ( user.getGroups().size() == 0); + assertTrue ( user.authenticate("wp") ); + + user = userList.getUser( "chris" ); + assertNotNull ( user ); + assertTrue ( user.getRoles().size() == 2); + assertNotNull ( user.getRole("customer") ); + assertNotNull ( user.getRole("support") ); + assertNull ( user.getRole("admin") ); + assertTrue ( user.getGroups().size() == 1); + assertTrue ( user.authenticate("cp") ); + + user = userList.getUser( "frank" ); + assertNotNull ( user ); + assertTrue ( user.getRoles().size() == 1); + assertNotNull ( user.getRole("support") ); + assertNull ( user.getRole("admin") ); + assertTrue ( user.getGroups().size() == 1); + assertTrue ( user.authenticate("fp") ); + + user = userList.getUser( "jack" ); + assertNotNull ( user ); + assertTrue ( user.getRoles().size() == 0); + assertTrue ( user.getGroups().size() == 0); + assertTrue ( user.authenticate("jp") ); + assertFalse ( user.authenticate("not_his_password") ); + + } + + private UserList createUserList ( BeehiveRoleDocument brd ) + { + BeehiveRole beehiveRole = brd.getBeehiveRole(); + + UserList userList = new MemoryUserListImpl(); + + // constructs Role. + for ( org.apache.beehive.wsm.axis.security.xmlbeans.Role role : beehiveRole.getRoleArray() ) + { + MemoryRoleImpl memoryRole = new MemoryRoleImpl(); + memoryRole.setName ( role.getName() ); + + userList.addRole( memoryRole ); + } + + // constructs Group. + for ( org.apache.beehive.wsm.axis.security.xmlbeans.Group group : beehiveRole.getGroupArray() ) + { + MemoryGroupImpl memoryGroup = new MemoryGroupImpl(); + memoryGroup.setName ( group.getName() ); + + userList.addGroup( memoryGroup ); + + for ( org.apache.beehive.wsm.axis.security.xmlbeans.Role role : beehiveRole.getRoleArray() ) + { + for ( String groupName : role.getGroupArray() ) + { + if ( groupName.equals( group.getName() ) ) + { + Role memoryRole = userList.getRole( role.getName() ); + if ( memoryRole != null ) + { + memoryGroup.addRole ( memoryRole ); + } + } + } + } + userList.addGroup ( memoryGroup ); + } + + // constructs User. + for( org.apache.beehive.wsm.axis.security.xmlbeans.User user : beehiveRole.getUserArray() ) + { + MemoryUserImpl memoryUser = new MemoryUserImpl(); + memoryUser.setName ( user.getName() ); + memoryUser.setPassword ( user.getPassword() ); + memoryUser.setMd5 ( user.getMd5() ); + + for ( org.apache.beehive.wsm.axis.security.xmlbeans.Group group : beehiveRole.getGroupArray() ) + { + for ( String userName : group.getUserArray() ) + { + if ( userName.equals( user.getName() ) ) + { + Group memoryGroup = userList.getGroup( group.getName() ); + if ( memoryGroup != null ) + { + + // User and Group hold references to each other + memoryGroup.addUser( memoryUser ); + memoryUser.addGroup( memoryGroup ); + + // user inherits this group's roles. + for ( Role memoryRole : memoryGroup.getRoles() ) + { + memoryUser.addRole ( memoryRole ); + } + + } + } + } + } + + + for ( org.apache.beehive.wsm.axis.security.xmlbeans.Role role : beehiveRole.getRoleArray() ) + { + for ( String userName : role.getUserArray() ) + { + if ( userName.equals( user.getName() ) ) + { + Role memoryRole = userList.getRole( role.getName() ); + if ( memoryRole != null ) + { + memoryUser.addRole( memoryRole ); + } + } + } + } + userList.addUser ( memoryUser ); + } + + return userList; + } + +} Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/security/model/MemoryGroupImpl.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/security/model/MemoryGroupImpl.java?view=diff&rev=111183&p1=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/security/model/MemoryGroupImpl.java&r1=111182&p2=incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/security/model/MemoryGroupImpl.java&r2=111183 ============================================================================== --- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/security/model/MemoryGroupImpl.java (original) +++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/axis/security/model/MemoryGroupImpl.java Tue Dec 7 16:38:01 2004 @@ -41,6 +41,7 @@ public MemoryGroupImpl () { + users = new Hashtable<String,User>(); roles = new Hashtable<String,Role>(); }
