You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by lh...@apache.org on 2009/09/18 23:22:25 UTC
svn commit: r816788 -
/incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterListTest.java
Author: lhazlewood
Date: Fri Sep 18 21:22:23 2009
New Revision: 816788
URL: http://svn.apache.org/viewvc?rev=816788&view=rev
Log:
Added test case
Added:
incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterListTest.java
Added: incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterListTest.java
URL: http://svn.apache.org/viewvc/incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterListTest.java?rev=816788&view=auto
==============================================================================
--- incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterListTest.java (added)
+++ incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/filter/mgt/SimpleNamedFilterListTest.java Fri Sep 18 21:22:23 2009
@@ -0,0 +1,157 @@
+/*
+ * 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.shiro.web.filter.mgt;
+
+import org.apache.shiro.util.CollectionUtils;
+import org.apache.shiro.web.filter.authc.UserFilter;
+import org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter;
+import org.apache.shiro.web.filter.authz.PortFilter;
+import org.apache.shiro.web.filter.authz.RolesAuthorizationFilter;
+import org.apache.shiro.web.filter.authz.SslFilter;
+import static org.easymock.EasyMock.*;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+/**
+ * Test case for the {@link SimpleNamedFilterList} implementation.
+ *
+ * @since 1.0
+ */
+public class SimpleNamedFilterListTest {
+
+ @Test
+ public void testNewInstance() {
+ @SuppressWarnings({"MismatchedQueryAndUpdateOfCollection"})
+ SimpleNamedFilterList list = new SimpleNamedFilterList("test");
+ assertNotNull(list.getName());
+ assertEquals("test", list.getName());
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testNewInstanceNameless() {
+ new SimpleNamedFilterList(null);
+ }
+
+ @Test
+ public void testNewInstanceBackingList() {
+ //noinspection unchecked
+ new SimpleNamedFilterList("test", new ArrayList());
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testNewInstanceNullBackingList() {
+ new SimpleNamedFilterList("test", null);
+ }
+
+ /**
+ * Exists mainly to increase code coverage as the SimpleNamedFilterList
+ * implementation is a direct pass through.
+ */
+ @Test
+ public void testListMethods() {
+ FilterChain mock = createNiceMock(FilterChain.class);
+ Filter filter = createNiceMock(Filter.class);
+
+ NamedFilterList list = new SimpleNamedFilterList("test");
+ list.add(filter);
+ FilterChain chain = list.proxy(mock);
+ assertNotNull(chain);
+ assertNotSame(mock, chain);
+
+ Filter singleFilter = new SslFilter();
+ List<? extends Filter> multipleFilters = CollectionUtils.asList(new PortFilter(), new UserFilter());
+
+ list.add(0, singleFilter);
+ assertEquals(2, list.size());
+ assertTrue(list.get(0) instanceof SslFilter);
+ assertEquals(list.toArray(), new Object[]{singleFilter, filter});
+
+ list.addAll(multipleFilters);
+ assertEquals(4, list.size());
+ assertTrue(list.get(2) instanceof PortFilter);
+ assertTrue(list.get(3) instanceof UserFilter);
+
+ list.addAll(0, CollectionUtils.asList(new PermissionsAuthorizationFilter(), new RolesAuthorizationFilter()));
+ assertEquals(6, list.size());
+ assertTrue(list.get(0) instanceof PermissionsAuthorizationFilter);
+ assertTrue(list.get(1) instanceof RolesAuthorizationFilter);
+ assertEquals(2, list.indexOf(singleFilter));
+ assertEquals(multipleFilters, list.subList(4, list.size()));
+
+ assertTrue(list.contains(singleFilter));
+ assertTrue(list.containsAll(multipleFilters));
+
+ assertFalse(list.isEmpty());
+ list.clear();
+ assertTrue(list.isEmpty());
+
+ list.add(singleFilter);
+ Iterator i = list.iterator();
+ assertTrue(i.hasNext());
+ assertEquals(i.next(), singleFilter);
+
+ ListIterator li = list.listIterator();
+ assertTrue(li.hasNext());
+ assertEquals(li.next(), singleFilter);
+
+ li = list.listIterator(0);
+ assertTrue(li.hasNext());
+ assertEquals(li.next(), singleFilter);
+
+ list.set(0, singleFilter);
+ assertEquals(list.get(0), singleFilter);
+
+ Filter[] filters = new Filter[list.size()];
+ filters = list.toArray(filters);
+ assertEquals(1, filters.length);
+ assertEquals(filters[0], singleFilter);
+
+ assertEquals(0, list.lastIndexOf(singleFilter));
+
+ list.remove(singleFilter);
+ assertTrue(list.isEmpty());
+
+ list.add(singleFilter);
+ list.remove(0);
+ assertTrue(list.isEmpty());
+
+ list.add(singleFilter);
+ list.addAll(multipleFilters);
+ assertEquals(3, list.size());
+ list.removeAll(multipleFilters);
+ assertEquals(1, list.size());
+ assertEquals(list.get(0), singleFilter);
+
+ list.addAll(multipleFilters);
+ assertEquals(3, list.size());
+ list.retainAll(multipleFilters);
+ assertEquals(2, list.size());
+ //noinspection unchecked
+ assertEquals(new ArrayList(list), multipleFilters);
+ }
+
+
+}