/** * 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.felix.useradmin.impl; import java.util.Arrays; import java.util.List; import junit.framework.TestCase; import org.apache.felix.useradmin.RoleFactory; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.event.Event; import org.osgi.service.event.EventAdmin; import org.osgi.service.useradmin.Authorization; import org.osgi.service.useradmin.Group; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; import org.osgi.service.useradmin.UserAdminListener; /** * Test cases for {@link UserAdminImpl}. */ public class UserAdminImplTest extends TestCase { /** * Provides a stub implementation for {@link EventAdmin}. */ static class StubEventAdmin implements EventAdmin { public void postEvent(Event event) { } public void sendEvent(Event event) { } } /** * Provides a stub implementation for {@link UserAdminListenerList}. */ static class StubUserAdminListenerList implements UserAdminListenerList { public UserAdminListener[] getListeners() { return new UserAdminListener[0]; } } private UserAdminImpl m_userAdmin; private RoleRepository m_roleRepository; private EventDispatcher m_dispatcher; /** * Tests that adding a basic member to a group works. */ public void testAddGroupMemberOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); assertTrue(group1.addMember(user1)); assertFalse(group1.addMember(user1)); } /** * Tests that adding a required member to a group works. */ public void testAddRequiredGroupMemberOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); assertTrue(group1.addRequiredMember(user1)); assertFalse(group1.addRequiredMember(user1)); } /** * Tests that adding a property of an invalid type to a role does not work and yields an exception. */ public void testAddRolePropertyOfInvalidTypeFail() { Role user1 = m_userAdmin.createRole("user1", Role.USER); try { user1.getProperties().put("key", Integer.valueOf(1)); fail("Expected IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that adding a property to a role works. */ public void testAddRolePropertyOk() { Role user1 = m_userAdmin.createRole("user1", Role.USER); assertNull(user1.getProperties().get("key")); user1.getProperties().put("key", "value"); assertEquals("value", user1.getProperties().get("key")); } /** * Tests that adding a credential of an invalid type to a user does not work and yields an exception. */ public void testAddUserCredentialInvalidTypeFails() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); try { user1.getCredentials().put("key", Integer.valueOf(1)); fail("Expected IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that adding a String credential to a user works. */ public void testAddUserCredentialOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); assertNull(user1.getCredentials().get("key")); user1.getCredentials().put("key", "value"); assertEquals("value", user1.getCredentials().get("key")); user1.getCredentials().put("key2", "value2".getBytes()); assertTrue(Arrays.equals("value2".getBytes(), (byte[]) user1.getCredentials().get("key2"))); } /** * Tests that testing for basic group membership works. */ public void testBasicGroupMembershipOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); User user2 = (User) m_userAdmin.createRole("user2", Role.USER); User user3 = (User) m_userAdmin.createRole("user3", Role.USER); Group reqGroup = (Group) m_userAdmin.createRole("reqGroup", Role.GROUP); reqGroup.addMember(user1); reqGroup.addMember(user2); reqGroup.addMember(user3); Group group = (Group) m_userAdmin.createRole("group", Role.GROUP); group.addRequiredMember(reqGroup); group.addMember(user1); group.addMember(user2); Authorization auth = m_userAdmin.getAuthorization(user1); assertTrue(auth.hasRole("group")); auth = m_userAdmin.getAuthorization(user2); assertTrue(auth.hasRole("group")); auth = m_userAdmin.getAuthorization(user3); assertFalse(auth.hasRole("group")); } /** * Tests that changing a property to an invalid type does not work and yields an exception. */ public void testChangeRolePropertyOfInvalidTypeFail() { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key", "value"); try { user1.getProperties().put("key", Integer.valueOf(1)); fail("Expected IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that changing a property of a role works. */ public void testChangeRolePropertyOk() { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key", "value"); assertEquals("value", user1.getProperties().get("key")); user1.getProperties().put("key", "changed"); assertEquals("changed", user1.getProperties().get("key")); } /** * Tests that changing a credential of a user works. */ public void testChangeUserCredentialOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); user1.getCredentials().put("key", "value"); assertEquals("value", user1.getCredentials().get("key")); user1.getCredentials().put("key", "changed"); assertEquals("changed", user1.getCredentials().get("key")); } /** * Tests that creating an existing group does not succeed and yields null. */ public void testCreateExistingGroupFail() { Role role = null; role = m_userAdmin.createRole("group1", Role.GROUP); assertNotNull(role); role = m_userAdmin.createRole("group1", Role.GROUP); assertNull(role); } /** * Tests that creating an existing role does not succeed and yields null. */ public void testCreateExistingUserFail() { Role role = null; role = m_userAdmin.createRole("user1", Role.USER); assertNotNull(role); role = m_userAdmin.createRole("user1", Role.USER); assertNull(role); } /** * Tests that creating a role without a name does not succeed and yields an exception. */ public void testCreateInvalidRoleNameFail() { try { m_userAdmin.createRole(null, Role.USER); fail("Expected an IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that creating a role with an invalid type does not succeed and yields an exception. */ public void testCreateInvalidRoleTypeFail() { try { m_userAdmin.createRole("role1", Role.ROLE); fail("Expected an IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that creating a non-existing group succeeds and yields a valid role instance. */ public void testCreateNonExistingGroupOk() { Role role = null; role = m_userAdmin.createRole("group1", Role.GROUP); assertNotNull(role); assertEquals("group1", role.getName()); } /** * Tests that creating a non-existing role succeeds and yields a valid role instance. */ public void testCreateNonExistingUserOk() { Role role = null; role = m_userAdmin.createRole("user1", Role.USER); assertNotNull(role); assertEquals("user1", role.getName()); } /** * Tests that creating a role without a name does not succeed and yields an exception. */ public void testCreateRoleWithEmptyNameFail() { try { m_userAdmin.createRole("", Role.USER); fail("Expected an IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that creating a {@link UserAdminImpl} with a null event dispatcher fails. */ public void testCreateUserAdminImplWithNullDispatcherFail() { try { new UserAdminImpl(m_roleRepository, null); fail("Expected IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that creating a {@link UserAdminImpl} with a null role repository fails. */ public void testCreateUserAdminImplWithNullRepositoryFail() { try { new UserAdminImpl(null, m_dispatcher); fail("Expected IllegalArgumentException!"); } catch (IllegalArgumentException e) { // Ok; expected } } /** * Tests that obtaining the authorization for a non-existing user yields null. */ public void testGetAuthorizationForAnonymousUserOk() { Authorization auth = m_userAdmin.getAuthorization(null); assertNotNull(auth); assertNull(auth.getRoles()); assertNull(auth.getName()); } /** * Tests that obtaining the authorization for a non-existing user yields null. */ public void testGetAuthorizationForNonExistingUserOk() { User nonExistingUser = RoleFactory.createUser("non-existing-user"); Authorization auth = m_userAdmin.getAuthorization(nonExistingUser); assertNotNull(auth); assertNull(auth.getRoles()); assertNotNull(auth.getName()); } /** * Tests that getting a existing group with an unique key-value pair does not work and yields null. */ public void testGetExistingGroupFail() { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key1", "value1"); user1.getProperties().put("key2", "constant"); Role user2 = m_userAdmin.createRole("user2", Role.USER); user2.getProperties().put("key1", "value2"); user1.getProperties().put("key2", "constant"); Role group1 = m_userAdmin.createRole("group1", Role.GROUP); group1.getProperties().put("key1", "value3"); assertNull(m_userAdmin.getUser("key1", "value3")); } /** * Tests that getting roles based on existing names works correctly. */ public void testGetExistingRolesOk() { m_userAdmin.createRole("user1", Role.USER); m_userAdmin.createRole("user2", Role.USER); m_userAdmin.createRole("user3", Role.USER); m_userAdmin.createRole("group1", Role.GROUP); assertEquals("user1", m_userAdmin.getRole("user1").getName()); assertEquals("user2", m_userAdmin.getRole("user2").getName()); assertEquals("user3", m_userAdmin.getRole("user3").getName()); assertEquals("group1", m_userAdmin.getRole("group1").getName()); } /** * Tests that getting an existing user with a non unique key-value pair does not work and yields null. */ public void testGetExistingUserWithNonUniqueKeyValueFail() { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key1", "value1"); user1.getProperties().put("key2", "constant"); Role user2 = m_userAdmin.createRole("user2", Role.USER); user2.getProperties().put("key1", "value2"); user2.getProperties().put("key2", "constant"); Role group1 = m_userAdmin.createRole("group1", Role.GROUP); group1.getProperties().put("key1", "value3"); assertNull(m_userAdmin.getUser("key2", "constant")); } /** * Tests that getting an existing user with an unique key-value pair works and yields the expected result. */ public void testGetExistingUserWithUniqueKeyValueOk() { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key1", "value1"); user1.getProperties().put("key2", "constant"); Role user2 = m_userAdmin.createRole("user2", Role.USER); user2.getProperties().put("key1", "value2"); user2.getProperties().put("key2", "constant"); Role group1 = m_userAdmin.createRole("group1", Role.GROUP); group1.getProperties().put("key1", "value3"); assertEquals(user1, m_userAdmin.getUser("key1", "value1")); assertEquals(user2, m_userAdmin.getUser("key1", "value2")); } /** * Tests that retrieving the basic members from a group works. */ public void testGetGroupMemberOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); assertNull(group1.getMembers()); assertTrue(group1.addMember(user1)); assertEquals(1, group1.getMembers().length); } /** * Tests that getting a non existing role by its name does not work and yields null. */ public void testGetNonExistingRoleFails() { assertNull(m_userAdmin.getRole("user1")); } /** * Tests that getting a non-existing user does not work and yields null. */ public void testGetNonExistingUserFail() { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key1", "value1"); user1.getProperties().put("key2", "constant"); Role user2 = m_userAdmin.createRole("user2", Role.USER); user2.getProperties().put("key1", "value2"); user1.getProperties().put("key2", "constant"); Role group1 = m_userAdmin.createRole("group1", Role.GROUP); group1.getProperties().put("key1", "value3"); assertNull(m_userAdmin.getUser("key1", "value4")); } /** * Tests that getting roles based on a OSGi-filter that does not match any roles yields null. */ public void testGetNonMatchingRolesOk() throws Exception { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key", "value1"); Role user2 = m_userAdmin.createRole("user2", Role.USER); user2.getProperties().put("key", "value2"); Role group1 = m_userAdmin.createRole("group1", Role.GROUP); group1.getProperties().put("key", "value3"); Role[] roles = m_userAdmin.getRoles("(nonExisting=value*)"); assertNull(roles); } /** * Tests that getting predefined roles based on their names works correctly. */ public void testGetPredefinedRolesOk() { assertEquals(Role.USER_ANYONE, m_userAdmin.getRole(Role.USER_ANYONE).getName()); } /** * Tests that getting a removed role yields null. */ public void testGetRemovedRoleFail() { m_userAdmin.createRole("user1", Role.USER); assertEquals("user1", m_userAdmin.getRole("user1").getName()); assertTrue(m_userAdmin.removeRole("user1")); assertNull(m_userAdmin.getRole("user1")); } /** * Tests that retrieving the required members from a group works. */ public void testGetRequiredGroupMemberOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); assertNull(group1.getRequiredMembers()); assertTrue(group1.addRequiredMember(user1)); assertEquals(1, group1.getRequiredMembers().length); } /** * Tests that getting the various names of defined roles works and yields the expected result. */ public void testGetRoleNamesOk() { m_userAdmin.createRole("user1", Role.USER); m_userAdmin.createRole("group1", Role.GROUP); assertEquals(Role.USER_ANYONE, m_userAdmin.getRole(Role.USER_ANYONE).getName()); assertEquals("user1", m_userAdmin.getRole("user1").getName()); assertEquals("group1", m_userAdmin.getRole("group1").getName()); } /** * Tests that getting multiple roles based on a OSGi-filter works and yields the correct result. */ public void testGetRolesWithFilterOk() throws Exception { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key", "value1"); Role user2 = m_userAdmin.createRole("user2", Role.USER); user2.getProperties().put("key", "value2"); Role group1 = m_userAdmin.createRole("group1", Role.GROUP); group1.getProperties().put("key", "value3"); Role group2 = m_userAdmin.createRole("group2", Role.GROUP); group2.getProperties().put("key", "otherValue3"); Role[] roles = m_userAdmin.getRoles("(key=value*)"); assertNotNull(roles); assertEquals(3, roles.length); List roleList = Arrays.asList(roles); assertTrue(roleList.contains(user1)); assertTrue(roleList.contains(user2)); assertTrue(roleList.contains(group1)); } /** * Tests that getting roles based on an invalid OSGi-filter yields an exception. */ public void testGetRolesWithInvalidFilterFails() throws Exception { try { m_userAdmin.getRoles("(nonExisting=value*"); fail("Expected an InvalidSyntaxException!"); } catch (InvalidSyntaxException e) { // Ok; expected } } /** * Tests that getting multiple roles based on a OSGi-filter works and yields the correct result. */ public void testGetRolesWithoutFilterOk() throws Exception { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key", "value1"); Role user2 = m_userAdmin.createRole("user2", Role.USER); user2.getProperties().put("key", "value2"); Role group1 = m_userAdmin.createRole("group1", Role.GROUP); group1.getProperties().put("key", "value3"); Role group2 = m_userAdmin.createRole("group2", Role.GROUP); group2.getProperties().put("key", "otherValue3"); Role[] roles = m_userAdmin.getRoles(null); assertNotNull(roles); assertEquals(4, roles.length); List roleList = Arrays.asList(roles); assertTrue(roleList.contains(user1)); assertTrue(roleList.contains(user2)); assertTrue(roleList.contains(group1)); assertTrue(roleList.contains(group2)); } /** * Tests that getting the various types of defined roles works and yields the expected result. */ public void testGetRoleTypesOk() { m_userAdmin.createRole("user1", Role.USER); m_userAdmin.createRole("group1", Role.GROUP); assertEquals(Role.ROLE, m_userAdmin.getRole(Role.USER_ANYONE).getType()); assertEquals(Role.USER, m_userAdmin.getRole("user1").getType()); assertEquals(Role.GROUP, m_userAdmin.getRole("group1").getType()); } /** * Tests that testing for group membership with anonymous users works. */ public void testGroupMembershipWithAnonymousUserOk() { Role user = m_userAdmin.createRole("user", Role.USER); Group group = (Group) m_userAdmin.createRole("group", Role.GROUP); group.addMember(user); Authorization auth = m_userAdmin.getAuthorization(null); assertTrue(auth.hasRole(Role.USER_ANYONE)); assertFalse(auth.hasRole("group")); } /** * Tests that testing for group membership with "user.anyone" works. */ public void testGroupMembershipWithUserAnyoneOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); User user2 = (User) m_userAdmin.createRole("user2", Role.USER); User user3 = (User) m_userAdmin.createRole("user3", Role.USER); User user4 = (User) m_userAdmin.createRole("user4", Role.USER); Group reqGroup = (Group) m_userAdmin.createRole("reqGroup", Role.GROUP); reqGroup.addMember(user1); reqGroup.addMember(user2); Group group = (Group) m_userAdmin.createRole("group", Role.GROUP); group.addRequiredMember(reqGroup); group.addMember(m_userAdmin.getRole(Role.USER_ANYONE)); Authorization auth = m_userAdmin.getAuthorization(user1); assertTrue(auth.hasRole("group")); auth = m_userAdmin.getAuthorization(user2); assertTrue(auth.hasRole("group")); auth = m_userAdmin.getAuthorization(user3); assertFalse(auth.hasRole("group")); auth = m_userAdmin.getAuthorization(user4); assertFalse(auth.hasRole("group")); } /** * Tests that testing the credentials for a user works and yields the correct result. */ public void testHasUserCredentialOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); user1.getCredentials().put("key1", "value"); user1.getCredentials().put("key2", "value".getBytes()); assertTrue(user1.hasCredential("key1", "value")); assertTrue(user1.hasCredential("key1", "value".getBytes())); assertTrue(user1.hasCredential("key2", "value")); assertTrue(user1.hasCredential("key2", "value".getBytes())); assertFalse(user1.hasCredential("otherKey", "value")); } /** * Tests that removing an existing role works. */ public void testRemoveExistingRoleOk() { Role role = null; role = m_userAdmin.createRole("group1", Role.GROUP); assertNotNull(role); assertTrue(m_userAdmin.removeRole("group1")); assertFalse(m_userAdmin.removeRole("group1")); } /** * Tests that removing a non existing role does not work, yields a false result. */ public void testRemoveNonExistingRoleOk() { assertFalse(m_userAdmin.removeRole("group1")); } /** * Tests that removing a predefined role does not work, and yields a false result. */ public void testRemovePredefinedRoleOk() { assertFalse(m_userAdmin.removeRole(Role.USER_ANYONE)); } /** * Tests that remove a property of a role works. */ public void testRemoveRolePropertyOk() { Role user1 = m_userAdmin.createRole("user1", Role.USER); user1.getProperties().put("key", "value"); assertEquals("value", user1.getProperties().get("key")); user1.getProperties().remove("key"); assertNull(user1.getProperties().get("key")); } /** * Tests that remove of a role also removes that role as member from any group (FELIX-3755). */ public void testRemoveRoleRemovesItAsGroupMemberOk() { Role user1 = m_userAdmin.createRole("user1", Role.USER); Role user2 = m_userAdmin.createRole("user2", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); group1.addMember(user1); Group group2 = (Group) m_userAdmin.createRole("group2", Role.GROUP); group2.addMember(user1); group2.addMember(user2); // Remove user... m_userAdmin.removeRole(user1.getName()); // Retrieve an up-to-date instance of the first group... group1 = (Group) m_userAdmin.getRole("group1"); assertNull(group1.getMembers()); // Retrieve an up-to-date instance of the second group... group2 = (Group) m_userAdmin.getRole("group2"); Role[] members = group2.getMembers(); assertNotNull(members); assertEquals(1, members.length); assertEquals(user2, members[0]); } /** * Tests that remove of a role also removes that role as required member from any group (FELIX-3755). */ public void testRemoveRoleRemovesItAsRequiredGroupMemberOk() { Role user1 = m_userAdmin.createRole("user1", Role.USER); Role user2 = m_userAdmin.createRole("user2", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); group1.addRequiredMember(user1); group1.addMember(user2); Group group2 = (Group) m_userAdmin.createRole("group2", Role.GROUP); group2.addRequiredMember(user1); group2.addRequiredMember(user2); // Remove user... m_userAdmin.removeRole(user1.getName()); // Retrieve an up-to-date instance of the group... group1 = (Group) m_userAdmin.getRole("group1"); assertNull(group1.getRequiredMembers()); Role[] members = group1.getMembers(); assertNotNull(members); assertEquals(1, members.length); assertEquals(user2, members[0]); // Retrieve an up-to-date instance of the group... group2 = (Group) m_userAdmin.getRole("group2"); assertNull(group2.getMembers()); members = group2.getRequiredMembers(); assertNotNull(members); assertEquals(1, members.length); assertEquals(user2, members[0]); } /** * Tests that remove a credential of a user works. */ public void testRemoveUserCredentialOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); user1.getCredentials().put("key", "value"); assertEquals("value", user1.getCredentials().get("key")); user1.getCredentials().remove("key"); assertNull(user1.getCredentials().get("key")); } /** * Tests that removing a basic member from a group works. */ public void testRemovingGroupMemberOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); assertTrue(group1.addMember(user1)); assertTrue(group1.removeMember(user1)); assertFalse(group1.removeMember(user1)); } /** * Tests that removing a required member from a group works. */ public void testRemovingRequiredGroupMemberOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); assertTrue(group1.addRequiredMember(user1)); assertTrue(group1.removeMember(user1)); assertFalse(group1.removeMember(user1)); } /** * Tests that testing for required group membership works. */ public void testRequiredGroupMembershipOk() { User user1 = (User) m_userAdmin.createRole("user1", Role.USER); User user2 = (User) m_userAdmin.createRole("user2", Role.USER); User user3 = (User) m_userAdmin.createRole("user3", Role.USER); Group reqGroup = (Group) m_userAdmin.createRole("reqGroup", Role.GROUP); reqGroup.addMember(user1); reqGroup.addMember(user2); reqGroup.addMember(user3); Group group = (Group) m_userAdmin.createRole("group", Role.GROUP); group.addRequiredMember(reqGroup); Authorization auth = m_userAdmin.getAuthorization(user1); assertFalse(auth.hasRole("group")); auth = m_userAdmin.getAuthorization(user2); assertFalse(auth.hasRole("group")); auth = m_userAdmin.getAuthorization(user3); assertFalse(auth.hasRole("group")); } /** * Tests that the list of roles in an {@link Authorization} does not contain the any-user, although it is defined as group member. */ public void testUserAnyoneIsNotPartOfAuthorizedRolesOk() { Role userAnyone = m_userAdmin.getRole(Role.USER_ANYONE); User user1 = (User) m_userAdmin.createRole("user1", Role.USER); Group group1 = (Group) m_userAdmin.createRole("group1", Role.GROUP); assertTrue(group1.addRequiredMember(user1)); assertTrue(group1.addMember(userAnyone)); Authorization auth = m_userAdmin.getAuthorization(user1); assertNotNull(auth); assertTrue(auth.hasRole("group1")); String[] roles = auth.getRoles(); assertNotNull(roles); for (int i = 0; i < roles.length; i++) { assertFalse(Role.USER_ANYONE.equals(roles[i])); } } /** * {@inheritDoc} */ protected void setUp() throws Exception { super.setUp(); m_roleRepository = new RoleRepository(new MemoryRoleRepositoryStore()); m_dispatcher = new EventDispatcher(new StubEventAdmin(), new StubUserAdminListenerList()); m_userAdmin = new UserAdminImpl(m_roleRepository, m_dispatcher); m_dispatcher.start(); } /** * {@inheritDoc} */ protected void tearDown() throws Exception { m_dispatcher.stop(); super.tearDown(); } }