| /** |
| * 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 junit.framework.TestCase; |
| |
| import org.apache.felix.useradmin.RoleFactory; |
| import org.osgi.service.useradmin.Group; |
| import org.osgi.service.useradmin.Role; |
| import org.osgi.service.useradmin.User; |
| |
| |
| /** |
| * Test cases for {@link RoleChecker}. |
| */ |
| public class RoleCheckerTest extends TestCase { |
| |
| private RoleChecker m_roleChecker; |
| private Role m_anyone; |
| |
| /** |
| * Tests that a user always implies itself. |
| */ |
| public void testUserAlwaysImpliesItself() { |
| User user = RoleFactory.createUser("foo"); |
| |
| assertTrue(m_roleChecker.isImpliedBy(user, user)); |
| } |
| |
| /** |
| * Test that a user does never imply a group to which it is not a member. |
| */ |
| public void testUserDoesNotImplyNotImpliedGroup() { |
| User user = RoleFactory.createUser("foo"); |
| Group group = RoleFactory.createGroup("bar"); |
| |
| assertFalse(m_roleChecker.isImpliedBy(user, group)); |
| } |
| |
| /** |
| * Test that a user does never imply a group to which it is not a member. |
| */ |
| public void testUserImpliesImpliedGroup() { |
| User user = RoleFactory.createUser("foo"); |
| |
| Group group = RoleFactory.createGroup("bar"); |
| group.addRequiredMember(m_anyone); |
| group.addMember(user); |
| |
| assertTrue(m_roleChecker.isImpliedBy(group, user)); |
| } |
| |
| /** |
| * Test that a user does never imply a group to which it is not a member. |
| */ |
| public void testGroupDoesNotImplyNotImpliedUser() { |
| User user = RoleFactory.createUser("foo"); |
| |
| Group group = RoleFactory.createGroup("bar"); |
| group.addMember(user); |
| |
| assertFalse(m_roleChecker.isImpliedBy(user, group)); |
| } |
| |
| /** |
| * Test that a group does never imply a group to which it is a required member. |
| */ |
| public void testGroupDoesNotImplySameRequiredGroup() { |
| User user = RoleFactory.createUser("foo"); |
| |
| Group group = RoleFactory.createGroup("bar"); |
| group.addRequiredMember(group); |
| group.addMember(user); |
| |
| assertFalse(m_roleChecker.isImpliedBy(group, group)); |
| } |
| |
| /** |
| * Test that a group does never imply a group to which it is a basic member. |
| */ |
| public void testGroupDoesNotImplySameGroup() { |
| User user = RoleFactory.createUser("foo"); |
| |
| Group group = RoleFactory.createGroup("bar"); |
| group.addMember(group); |
| group.addMember(user); |
| |
| assertFalse(m_roleChecker.isImpliedBy(group, group)); |
| } |
| |
| /** |
| * Test that a membership can be implied for users belonging to multiple required groups. |
| */ |
| public void testRequiredRolesMultipleRequiredGroupsOk() { |
| User elmer = RoleFactory.createUser("elmer"); |
| User pepe = RoleFactory.createUser("pepe"); |
| User bugs = RoleFactory.createUser("bugs"); |
| User daffy = RoleFactory.createUser("daffy"); |
| |
| Group administrators = RoleFactory.createGroup("administrators"); |
| administrators.addRequiredMember(m_anyone); |
| administrators.addMember(elmer); |
| administrators.addMember(pepe); |
| administrators.addMember(bugs); |
| |
| Group family = RoleFactory.createGroup("family"); |
| family.addRequiredMember(m_anyone); |
| family.addMember(elmer); |
| family.addMember(pepe); |
| family.addMember(daffy); |
| |
| Group alarmSystemActivation = RoleFactory.createGroup("alarmSystemActivation"); |
| alarmSystemActivation.addMember(m_anyone); |
| alarmSystemActivation.addRequiredMember(administrators); |
| alarmSystemActivation.addRequiredMember(family); |
| |
| assertTrue(m_roleChecker.isImpliedBy(alarmSystemActivation, elmer)); |
| assertTrue(m_roleChecker.isImpliedBy(alarmSystemActivation, pepe)); |
| assertFalse(m_roleChecker.isImpliedBy(alarmSystemActivation, bugs)); |
| assertFalse(m_roleChecker.isImpliedBy(alarmSystemActivation, daffy)); |
| } |
| |
| /** |
| * Test that a membership can be implied for users belonging to multiple non-required groups. |
| */ |
| public void testRequiredRolesMultipleGroupsOk() { |
| User elmer = RoleFactory.createUser("elmer"); |
| User pepe = RoleFactory.createUser("pepe"); |
| User bugs = RoleFactory.createUser("bugs"); |
| User daffy = RoleFactory.createUser("daffy"); |
| |
| Group administrators = RoleFactory.createGroup("administrators"); |
| administrators.addRequiredMember(m_anyone); |
| administrators.addMember(elmer); |
| administrators.addMember(pepe); |
| administrators.addMember(bugs); |
| |
| Group family = RoleFactory.createGroup("family"); |
| family.addRequiredMember(m_anyone); |
| family.addMember(elmer); |
| family.addMember(pepe); |
| family.addMember(daffy); |
| |
| Group alarmSystemActivation = RoleFactory.createGroup("alarmSystemActivation"); |
| alarmSystemActivation.addRequiredMember(m_anyone); |
| alarmSystemActivation.addMember(administrators); |
| alarmSystemActivation.addMember(family); |
| |
| assertTrue(m_roleChecker.isImpliedBy(alarmSystemActivation, elmer)); |
| assertTrue(m_roleChecker.isImpliedBy(alarmSystemActivation, pepe)); |
| assertTrue(m_roleChecker.isImpliedBy(alarmSystemActivation, bugs)); |
| assertTrue(m_roleChecker.isImpliedBy(alarmSystemActivation, daffy)); |
| } |
| |
| /** |
| * Test that a membership can be implied for users belonging to multiple non-required groups. |
| */ |
| public void testVotersRequiredMembersOk() { |
| Group citizens = RoleFactory.createGroup("citizen"); |
| citizens.addRequiredMember(m_anyone); |
| |
| Group adults = RoleFactory.createGroup("adult"); |
| adults.addRequiredMember(m_anyone); |
| |
| Group voters = RoleFactory.createGroup("voter"); |
| voters.addRequiredMember(citizens); |
| voters.addRequiredMember(adults); |
| voters.addMember(m_anyone); |
| |
| |
| // Elmer belongs to the citizens and adults... |
| User elmer = RoleFactory.createUser("elmer"); |
| citizens.addMember(elmer); |
| adults.addMember(elmer); |
| |
| // Pepe belongs to the citizens, but is not an adult... |
| User pepe = RoleFactory.createUser("pepe"); |
| citizens.addMember(pepe); |
| |
| // Bugs is an adult, but is not a citizen... |
| User bugs = RoleFactory.createUser("bugs"); |
| adults.addMember(bugs); |
| |
| // Daffy is not an adult, neither a citizen... |
| User daffy = RoleFactory.createUser("daffy"); |
| |
| assertTrue(m_roleChecker.isImpliedBy(voters, elmer)); |
| assertFalse(m_roleChecker.isImpliedBy(voters, pepe)); |
| assertFalse(m_roleChecker.isImpliedBy(voters, bugs)); |
| assertFalse(m_roleChecker.isImpliedBy(voters, daffy)); |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| m_anyone = RoleFactory.createRole(Role.USER_ANYONE); |
| |
| m_roleChecker = new RoleChecker(); |
| } |
| } |