1   /* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
2    *
3    * Licensed under the Apache License, Version 2.0 (the "License");
4    * you may not use this file except in compliance with the License.
5    * You may obtain a copy of the License at
6    *
7    *     http://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  
16  package org.acegisecurity.intercept.web;
17  
18  import junit.framework.TestCase;
19  
20  import org.springframework.mock.web.MockHttpServletRequest;
21  import org.springframework.mock.web.MockHttpServletResponse;
22  
23  import java.io.IOException;
24  
25  import javax.servlet.FilterChain;
26  import javax.servlet.ServletException;
27  import javax.servlet.ServletRequest;
28  import javax.servlet.ServletResponse;
29  
30  
31  /**
32   * Tests {@link AbstractFilterInvocationDefinitionSource}.
33   *
34   * @author Ben Alex
35   * @version $Id: AbstractFilterInvocationDefinitionSourceTests.java 1496 2006-05-23 13:38:33Z benalex $
36   */
37  public class AbstractFilterInvocationDefinitionSourceTests extends TestCase {
38      //~ Constructors ===================================================================================================
39  
40      public AbstractFilterInvocationDefinitionSourceTests() {
41          super();
42      }
43  
44      public AbstractFilterInvocationDefinitionSourceTests(String arg0) {
45          super(arg0);
46      }
47  
48      //~ Methods ========================================================================================================
49  
50      public static void main(String[] args) {
51          junit.textui.TestRunner.run(AbstractFilterInvocationDefinitionSourceTests.class);
52      }
53  
54      public final void setUp() throws Exception {
55          super.setUp();
56      }
57  
58      public void testDoesNotSupportAnotherObject() {
59          MockFilterInvocationDefinitionSource mfis = new MockFilterInvocationDefinitionSource(false, true);
60          assertFalse(mfis.supports(String.class));
61      }
62  
63      public void testGetAttributesForANonFilterInvocation() {
64          MockFilterInvocationDefinitionSource mfis = new MockFilterInvocationDefinitionSource(false, true);
65  
66          try {
67              mfis.getAttributes(new String());
68              fail("Should have thrown IllegalArgumentException");
69          } catch (IllegalArgumentException expected) {
70              assertTrue(true);
71          }
72      }
73  
74      public void testGetAttributesForANullObject() {
75          MockFilterInvocationDefinitionSource mfis = new MockFilterInvocationDefinitionSource(false, true);
76  
77          try {
78              mfis.getAttributes(null);
79              fail("Should have thrown IllegalArgumentException");
80          } catch (IllegalArgumentException expected) {
81              assertTrue(true);
82          }
83      }
84  
85      public void testGetAttributesForFilterInvocationSuccess() {
86          MockFilterInvocationDefinitionSource mfis = new MockFilterInvocationDefinitionSource(false, true);
87  
88          try {
89              mfis.getAttributes(new FilterInvocation(new MockHttpServletRequest(null, null),
90                      new MockHttpServletResponse(), new MockFilterChain()));
91              fail("Should have thrown UnsupportedOperationException");
92          } catch (UnsupportedOperationException expected) {
93              assertTrue(true);
94          }
95      }
96  
97      public void testSupportsFilterInvocation() {
98          MockFilterInvocationDefinitionSource mfis = new MockFilterInvocationDefinitionSource(false, true);
99          assertTrue(mfis.supports(FilterInvocation.class));
100     }
101 
102     //~ Inner Classes ==================================================================================================
103 
104     private class MockFilterChain implements FilterChain {
105         public void doFilter(ServletRequest arg0, ServletResponse arg1)
106             throws IOException, ServletException {
107             throw new UnsupportedOperationException("mock method not implemented");
108         }
109     }
110 }