/* * Copyright 2005-2010 the original author or authors. * * 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.wamblee.security.authentication; import java.util.Set; import org.wamblee.security.authentication.Group; import org.wamblee.security.authentication.GroupSet; import org.wamblee.security.authentication.InMemoryGroupSet; import junit.framework.TestCase; /** * Tests the inmemory group set. Intended to be subclassed for other * implementations of group set. */ public class InMemoryGroupSetTest extends TestCase { private GroupSet groups; /** * This method must be overriden in subclasses. * * @return New group set object. */ protected GroupSet createGroupSet() { return new InMemoryGroupSet(); } /* * (non-Javadoc) * * @see org.wamblee.test.SpringTestCase#setUp() */ @Override protected void setUp() throws Exception { super.setUp(); groups = createGroupSet(); checkGroupCount(0); } /** * Additional check to be implemented by a subclass. * * @param aGroup * Group to check for existence. * */ protected void checkGroupExists(String aGroup) throws Exception { // Empty } /** * Additional check to be implemented by a subclass. * * @param aGroup * Group to check for non-existence. * */ protected void checkGroupNotExists(String aGroup) throws Exception { // Empty } /** * Additional check to be implemented by a subclass. * * @param aSize * Expected number of groups. * */ protected void checkGroupCount(int aSize) throws Exception { assertEquals(aSize, groups.size()); } /** * Adds a group and verifies that the group is added using find(), list(), * and contains(). * */ public void testAdd() throws Exception { Group group = new Group("group1"); assertTrue(groups.add(group)); checkGroupExists(group.getName()); checkGroupCount(1); Group group2 = groups.find("group1"); assertNotNull(group2); assertEquals(group.getName(), group2.getName()); Set set = groups.list(); assertEquals(1, set.size()); assertTrue(set.contains(group)); } /** * Tries to find a non-existing group. Verifies that null is returned. * */ public void testFindUnknownGroup() throws Exception { Group group1 = new Group("group1"); Group group2 = new Group("group2"); groups.add(group1); groups.add(group2); checkGroupExists(group1.getName()); checkGroupExists(group2.getName()); assertNull(groups.find("group3")); checkGroupNotExists("group3"); } /** * Adds duplicate group. Verifies that the existing group is left untouched. * */ public void testAddDuplicateGroup() throws Exception { Group group1 = new Group("group1"); groups.add(group1); assertEquals(1, groups.list().size()); assertTrue(groups.contains(group1)); group1 = new Group("group1"); assertFalse(groups.add(group1)); assertEquals(1, groups.list().size()); checkGroupExists(group1.getName()); checkGroupCount(1); } /** * Removes a group. Verifies that the group is removed and the return value * is true. * */ public void testRemoveGroup() throws Exception { Group group1 = new Group("group1"); groups.add(group1); assertTrue(groups.contains(group1)); checkGroupCount(1); assertTrue(groups.remove(group1)); assertFalse(groups.contains(group1)); assertNull(groups.find(group1.getName())); assertEquals(0, groups.list().size()); checkGroupCount(0); } /** * Removes a non-existing group. Verifies that no groups are removed an that * the return value is true. * */ public void testRemoveNonExistingGroup() throws Exception { Group group1 = new Group("group1"); groups.add(group1); checkGroupCount(1); Group nonExistingGroup = new Group("group2"); assertFalse(groups.remove(nonExistingGroup)); assertTrue(groups.contains(group1)); assertEquals(1, groups.list().size()); checkGroupCount(1); } /** * Adds a number of groups to the set and verifies that list() returns them * all. * */ public void testList() throws Exception { Group group1 = new Group("group1"); Group group2 = new Group("group2"); Group group3 = new Group("group3"); assertTrue(groups.add(group1)); assertTrue(groups.add(group2)); assertTrue(groups.add(group3)); checkGroupExists(group1.getName()); checkGroupExists(group2.getName()); checkGroupExists(group3.getName()); Set set = groups.list(); assertTrue(set.contains(group1)); assertTrue(set.contains(group2)); assertTrue(set.contains(group3)); checkGroupCount(3); } public void testRenameGroupTwice() { Group group = new Group("x"); groups.add(group); groups.groupModified(group); group.setName("y"); groups.groupModified(group); Group g = groups.find("y"); assertNotNull(g); groups.groupModified(group); } }