X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthentication%2FInMemoryGroupSetTest.java;fp=security%2Fimpl%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthentication%2FInMemoryGroupSetTest.java;h=9ff7a4a655fed3ec5aa40453f0e698ff1fb53695;hb=0adf8fb6e00f08a022379cff5edb43fcde30184c;hp=0000000000000000000000000000000000000000;hpb=225f5d67c047f25de6bd53ae24f120fbc7fee620;p=utils diff --git a/security/impl/src/test/java/org/wamblee/security/authentication/InMemoryGroupSetTest.java b/security/impl/src/test/java/org/wamblee/security/authentication/InMemoryGroupSetTest.java new file mode 100644 index 00000000..9ff7a4a6 --- /dev/null +++ b/security/impl/src/test/java/org/wamblee/security/authentication/InMemoryGroupSetTest.java @@ -0,0 +1,211 @@ +/* + * 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); + } +}