blob: 59ac996c62016b82d01ea6addd07296f48d23b57 [file] [log] [blame]
/**
* 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();
}
}