001: /* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
002: *
003: * Licensed under the Apache License, Version 2.0 (the "License");
004: * you may not use this file except in compliance with the License.
005: * You may obtain a copy of the License at
006: *
007: * http://www.apache.org/licenses/LICENSE-2.0
008: *
009: * Unless required by applicable law or agreed to in writing, software
010: * distributed under the License is distributed on an "AS IS" BASIS,
011: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: * See the License for the specific language governing permissions and
013: * limitations under the License.
014: */
015:
016: package org.acegisecurity.intercept.web;
017:
018: import junit.framework.TestCase;
019:
020: import org.acegisecurity.ConfigAttributeDefinition;
021: import org.acegisecurity.MockFilterChain;
022: import org.acegisecurity.SecurityConfig;
023:
024: import org.springframework.mock.web.MockHttpServletRequest;
025: import org.springframework.mock.web.MockHttpServletResponse;
026:
027: /**
028: * Tests parts of {@link RegExpBasedFilterInvocationDefinitionMap} not tested by {@link
029: * FilterInvocationDefinitionSourceEditorTests}.
030: *
031: * @author Ben Alex
032: * @version $Id: RegExpBasedFilterDefinitionMapTests.java 1496 2006-05-23 13:38:33Z benalex $
033: */
034: public class RegExpBasedFilterDefinitionMapTests extends TestCase {
035: //~ Constructors ===================================================================================================
036:
037: public RegExpBasedFilterDefinitionMapTests() {
038: super ();
039: }
040:
041: public RegExpBasedFilterDefinitionMapTests(String arg0) {
042: super (arg0);
043: }
044:
045: //~ Methods ========================================================================================================
046:
047: public static void main(String[] args) {
048: junit.textui.TestRunner
049: .run(RegExpBasedFilterDefinitionMapTests.class);
050: }
051:
052: public final void setUp() throws Exception {
053: super .setUp();
054: }
055:
056: public void testConvertUrlToLowercaseIsFalseByDefault() {
057: RegExpBasedFilterInvocationDefinitionMap map = new RegExpBasedFilterInvocationDefinitionMap();
058: assertFalse(map.isConvertUrlToLowercaseBeforeComparison());
059: }
060:
061: public void testConvertUrlToLowercaseSetterRespected() {
062: RegExpBasedFilterInvocationDefinitionMap map = new RegExpBasedFilterInvocationDefinitionMap();
063: map.setConvertUrlToLowercaseBeforeComparison(true);
064: assertTrue(map.isConvertUrlToLowercaseBeforeComparison());
065: }
066:
067: public void testLookupNotRequiringExactMatchSuccessIfNotMatching() {
068: RegExpBasedFilterInvocationDefinitionMap map = new RegExpBasedFilterInvocationDefinitionMap();
069: map.setConvertUrlToLowercaseBeforeComparison(true);
070: assertTrue(map.isConvertUrlToLowercaseBeforeComparison());
071:
072: ConfigAttributeDefinition def = new ConfigAttributeDefinition();
073: def.addConfigAttribute(new SecurityConfig("ROLE_ONE"));
074: map.addSecureUrl("\\A/secure/super.*\\Z", def);
075:
076: // Build a HTTP request
077: MockHttpServletRequest request = new MockHttpServletRequest();
078: request.setRequestURI(null);
079:
080: MockHttpServletRequest req = request;
081: req.setServletPath("/SeCuRE/super/somefile.html");
082:
083: FilterInvocation fi = new FilterInvocation(req,
084: new MockHttpServletResponse(), new MockFilterChain());
085:
086: ConfigAttributeDefinition response = map.lookupAttributes(fi
087: .getRequestUrl());
088: assertEquals(def, response);
089: }
090:
091: public void testLookupRequiringExactMatchFailsIfNotMatching() {
092: RegExpBasedFilterInvocationDefinitionMap map = new RegExpBasedFilterInvocationDefinitionMap();
093: assertFalse(map.isConvertUrlToLowercaseBeforeComparison());
094:
095: ConfigAttributeDefinition def = new ConfigAttributeDefinition();
096: def.addConfigAttribute(new SecurityConfig("ROLE_ONE"));
097: map.addSecureUrl("\\A/secure/super.*\\Z", def);
098:
099: // Build a HTTP request
100: MockHttpServletRequest request = new MockHttpServletRequest();
101: request.setRequestURI(null);
102:
103: MockHttpServletRequest req = request;
104: req.setServletPath("/SeCuRE/super/somefile.html");
105:
106: FilterInvocation fi = new FilterInvocation(req,
107: new MockHttpServletResponse(), new MockFilterChain());
108:
109: ConfigAttributeDefinition response = map.lookupAttributes(fi
110: .getRequestUrl());
111: assertEquals(null, response);
112: }
113:
114: public void testLookupRequiringExactMatchIsSuccessful() {
115: RegExpBasedFilterInvocationDefinitionMap map = new RegExpBasedFilterInvocationDefinitionMap();
116: assertFalse(map.isConvertUrlToLowercaseBeforeComparison());
117:
118: ConfigAttributeDefinition def = new ConfigAttributeDefinition();
119: def.addConfigAttribute(new SecurityConfig("ROLE_ONE"));
120: map.addSecureUrl("\\A/secure/super.*\\Z", def);
121:
122: // Build a HTTP request
123: MockHttpServletRequest request = new MockHttpServletRequest();
124: request.setRequestURI(null);
125:
126: MockHttpServletRequest req = request;
127: req.setServletPath("/secure/super/somefile.html");
128:
129: FilterInvocation fi = new FilterInvocation(req,
130: new MockHttpServletResponse(), new MockFilterChain());
131:
132: ConfigAttributeDefinition response = map.lookupAttributes(fi
133: .getRequestUrl());
134: assertEquals(def, response);
135: }
136: }
|