diff --git a/core/src/test/java/org/acegisecurity/MethodDefinitionAttributesTests.java b/core/src/test/java/org/acegisecurity/MethodDefinitionAttributesTests.java deleted file mode 100644 index 0e8efdef43..0000000000 --- a/core/src/test/java/org/acegisecurity/MethodDefinitionAttributesTests.java +++ /dev/null @@ -1,305 +0,0 @@ -/* Copyright 2004 Acegi Technology Pty Limited - * - * 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 net.sf.acegisecurity; - -import junit.framework.TestCase; - -import net.sf.acegisecurity.context.ContextHolder; -import net.sf.acegisecurity.context.SecureContext; -import net.sf.acegisecurity.context.SecureContextImpl; -import net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken; - -import org.aopalliance.intercept.MethodInvocation; - -import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader; - -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Method; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.Properties; -import java.util.Set; - - -/** - * Tests {@link MethodDefinitionAttributes}. - * - * @author Cameron Braid - * @author Ben Alex - */ -public class MethodDefinitionAttributesTests extends TestCase { - //~ Instance fields ======================================================== - - ClassPathXmlApplicationContext applicationContext; - - //~ Constructors =========================================================== - - public MethodDefinitionAttributesTests(String a) { - super(a); - } - - //~ Methods ================================================================ - - public final void setUp() throws Exception { - super.setUp(); - } - - public static void main(String[] args) { - junit.textui.TestRunner.run(MethodDefinitionAttributesTests.class); - } - - public void testAttributesForInterfaceTargetObject() - throws Exception { - ConfigAttributeDefinition def1 = getConfigAttributeDefinition(ITargetObject.class, - "countLength", new Class[] {String.class}); - Set set1 = toSet(def1); - assertTrue(set1.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set1.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_COUNT_LENGTH"))); - - ConfigAttributeDefinition def2 = getConfigAttributeDefinition(ITargetObject.class, - "makeLowerCase", new Class[] {String.class}); - Set set2 = toSet(def2); - assertTrue(set2.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set2.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_MAKE_LOWER_CASE"))); - - ConfigAttributeDefinition def3 = getConfigAttributeDefinition(ITargetObject.class, - "makeUpperCase", new Class[] {String.class}); - Set set3 = toSet(def3); - assertTrue(set3.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set3.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_MAKE_UPPER_CASE"))); - } - - public void testAttributesForOtherTargetObject() throws Exception { - ConfigAttributeDefinition def1 = getConfigAttributeDefinition(OtherTargetObject.class, - "countLength", new Class[] {String.class}); - Set set1 = toSet(def1); - assertTrue(set1.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set1.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_COUNT_LENGTH"))); - - // Confirm MOCK_CLASS_METHOD_COUNT_LENGTH not added, as it's a String (not a ConfigAttribute) - // Confirm also MOCK_CLASS not added, as we return null for class - assertEquals(2, set1.size()); - - ConfigAttributeDefinition def2 = getConfigAttributeDefinition(OtherTargetObject.class, - "makeLowerCase", new Class[] {String.class}); - Set set2 = toSet(def2); - assertTrue(set2.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set2.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_MAKE_LOWER_CASE"))); - assertTrue(set2.contains( - new SecurityConfig("MOCK_CLASS_METHOD_MAKE_LOWER_CASE"))); - - // Confirm MOCK_CLASS not added, as we return null for class - assertEquals(3, set2.size()); - - ConfigAttributeDefinition def3 = getConfigAttributeDefinition(OtherTargetObject.class, - "makeUpperCase", new Class[] {String.class}); - Set set3 = toSet(def3); - assertTrue(set3.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set3.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_MAKE_UPPER_CASE"))); - assertTrue(set3.contains(new SecurityConfig("RUN_AS"))); // defined against interface - - assertEquals(3, set3.size()); - } - - public void testAttributesForTargetObject() throws Exception { - ConfigAttributeDefinition def1 = getConfigAttributeDefinition(TargetObject.class, - "countLength", new Class[] {String.class}); - Set set1 = toSet(def1); - assertTrue(set1.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set1.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_COUNT_LENGTH"))); - - assertTrue(set1.contains(new SecurityConfig("MOCK_CLASS"))); - - // Confirm the MOCK_CLASS_METHOD_COUNT_LENGTH was not added, as it's not a ConfigAttribute - assertEquals(3, set1.size()); - - ConfigAttributeDefinition def2 = getConfigAttributeDefinition(TargetObject.class, - "makeLowerCase", new Class[] {String.class}); - Set set2 = toSet(def2); - assertTrue(set2.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set2.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_MAKE_LOWER_CASE"))); - assertTrue(set2.contains(new SecurityConfig("MOCK_CLASS"))); - assertTrue(set2.contains( - new SecurityConfig("MOCK_CLASS_METHOD_MAKE_LOWER_CASE"))); - assertEquals(4, set2.size()); - - ConfigAttributeDefinition def3 = getConfigAttributeDefinition(TargetObject.class, - "makeUpperCase", new Class[] {String.class}); - Set set3 = toSet(def3); - assertTrue(set3.contains(new SecurityConfig("MOCK_INTERFACE"))); - assertTrue(set3.contains( - new SecurityConfig("MOCK_INTERFACE_METHOD_MAKE_UPPER_CASE"))); - assertTrue(set3.contains(new SecurityConfig("MOCK_CLASS"))); - assertTrue(set3.contains( - new SecurityConfig("MOCK_CLASS_METHOD_MAKE_UPPER_CASE"))); - assertTrue(set3.contains(new SecurityConfig("RUN_AS"))); - assertEquals(5, set3.size()); - } - - public void testMethodCallWithRunAsReplacement() throws Exception { - SecureContext context = new SecureContextImpl(); - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", - "Password", - new GrantedAuthority[] {new GrantedAuthorityImpl("MOCK_INTERFACE_METHOD_MAKE_UPPER_CASE")}); - context.setAuthentication(token); - ContextHolder.setContext(context); - - ITargetObject target = makeInterceptedTarget(); - String result = target.makeUpperCase("hello"); - assertEquals("HELLO net.sf.acegisecurity.MockRunAsAuthenticationToken true", - result); - - ContextHolder.setContext(null); - } - - public void testMethodCallWithoutRunAsReplacement() - throws Exception { - SecureContext context = new SecureContextImpl(); - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", - "Password", - new GrantedAuthority[] {new GrantedAuthorityImpl("MOCK_INTERFACE_METHOD_MAKE_LOWER_CASE")}); - context.setAuthentication(token); - ContextHolder.setContext(context); - - ITargetObject target = makeInterceptedTarget(); - String result = target.makeLowerCase("HELLO"); - - assertEquals("hello net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken true", - result); - - ContextHolder.setContext(null); - } - - private ConfigAttributeDefinition getConfigAttributeDefinition( - Class clazz, String methodName, Class[] args) throws Exception { - final Method method = clazz.getMethod(methodName, args); - MethodDefinitionAttributes source = new MethodDefinitionAttributes(); - source.setAttributes(new MockAttributes()); - - ConfigAttributeDefinition config = source.getAttributes(new MockMethodInvocation() { - public Method getMethod() { - return method; - } - }); - - return config; - } - - private ITargetObject makeInterceptedTarget() { - String PREFIX = "beans."; - DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); - Properties p = new Properties(); - p.setProperty(PREFIX + "authentication.class", - "net.sf.acegisecurity.MockAuthenticationManager"); - p.setProperty(PREFIX + "accessDecision.class", - "net.sf.acegisecurity.MockAccessDecisionManager"); - p.setProperty(PREFIX + "runAs.class", - "net.sf.acegisecurity.MockRunAsManager"); - p.setProperty(PREFIX + "attributes.class", - "net.sf.acegisecurity.MockAttributes"); - - p.setProperty(PREFIX + "methodDefinitionSource.class", - "net.sf.acegisecurity.MethodDefinitionAttributes"); - p.setProperty(PREFIX + "methodDefinitionSource.attributes(ref)", - "attributes"); - - p.setProperty(PREFIX + "securityInterceptor.class", - "net.sf.acegisecurity.SecurityInterceptor"); - p.setProperty(PREFIX + "securityInterceptor.authenticationManager(ref)", - "authentication"); - p.setProperty(PREFIX + "securityInterceptor.accessDecisionManager(ref)", - "accessDecision"); - p.setProperty(PREFIX + "securityInterceptor.runAsManager(ref)", "runAs"); - p.setProperty(PREFIX - + "securityInterceptor.methodDefinitionSource(ref)", - "methodDefinitionSource"); - - p.setProperty(PREFIX + "targetObject.class", - "net.sf.acegisecurity.TargetObject"); - p.setProperty(PREFIX + "target.class", - "org.springframework.aop.framework.ProxyFactoryBean"); - p.setProperty(PREFIX + "target.proxyInterfaces", - "net.sf.acegisecurity.ITargetObject"); - p.setProperty(PREFIX + "target.interceptorNames", - "securityInterceptor,targetObject"); - - (new PropertiesBeanDefinitionReader(lbf)).registerBeanDefinitions(p, - PREFIX); - - return (ITargetObject) lbf.getBean("target"); - } - - /** - * convert a ConfigAttributeDefinition into a set of - * ConfigAttribute(s) - * - * @param def the ConfigAttributeDefinition to cover - * - * @return a Set of ConfigAttributes - */ - private Set toSet(ConfigAttributeDefinition def) { - Set set = new HashSet(); - Iterator i = def.getConfigAttributes(); - - while (i.hasNext()) { - ConfigAttribute a = (ConfigAttribute) i.next(); - set.add(a); - } - - return set; - } - - //~ Inner Classes ========================================================== - - private class MockMethodInvocation implements MethodInvocation { - public Object[] getArguments() { - throw new UnsupportedOperationException( - "mock method not implemented"); - } - - public Method getMethod() { - throw new UnsupportedOperationException( - "mock method not implemented"); - } - - public AccessibleObject getStaticPart() { - throw new UnsupportedOperationException( - "mock method not implemented"); - } - - public Object getThis() { - throw new UnsupportedOperationException( - "mock method not implemented"); - } - - public Object proceed() throws Throwable { - throw new UnsupportedOperationException( - "mock method not implemented"); - } - } -} diff --git a/core/src/test/java/org/acegisecurity/MethodDefinitionSourceEditorTests.java b/core/src/test/java/org/acegisecurity/MethodDefinitionSourceEditorTests.java deleted file mode 100644 index 474cf59202..0000000000 --- a/core/src/test/java/org/acegisecurity/MethodDefinitionSourceEditorTests.java +++ /dev/null @@ -1,215 +0,0 @@ -/* Copyright 2004 Acegi Technology Pty Limited - * - * 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 net.sf.acegisecurity; - -import junit.framework.TestCase; - -import org.aopalliance.intercept.MethodInvocation; - -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Method; - -import java.util.Iterator; - - -/** - * Tests {@link MethodDefinitionSourceEditor}. - * - * @author Ben Alex - * @version $Id$ - */ -public class MethodDefinitionSourceEditorTests extends TestCase { - //~ Constructors =========================================================== - - public MethodDefinitionSourceEditorTests() { - super(); - } - - public MethodDefinitionSourceEditorTests(String arg0) { - super(arg0); - } - - //~ Methods ================================================================ - - public final void setUp() throws Exception { - super.setUp(); - } - - public static void main(String[] args) { - junit.textui.TestRunner.run(MethodDefinitionSourceEditorTests.class); - } - - public void testClassNameNotFoundResultsInException() { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - - try { - editor.setAsText("net.sf.acegisecurity.DOES_NOT_EXIST_NAME=FOO,BAR"); - fail("Should have given IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertTrue(true); - } - } - - public void testClassNameNotInProperFormatResultsInException() { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - - try { - editor.setAsText("DOES_NOT_EXIST_NAME=FOO,BAR"); - fail("Should have given IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertTrue(true); - } - } - - public void testClassNameValidButMethodNameInvalidResultsInException() { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - - try { - editor.setAsText( - "net.sf.acegisecurity.TargetObject.INVALID_METHOD=FOO,BAR"); - fail("Should have given IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertTrue(true); - } - } - - public void testEmptyStringReturnsEmptyMap() { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - editor.setAsText(""); - - MethodDefinitionMap map = (MethodDefinitionMap) editor.getValue(); - assertEquals(0, map.getMethodMapSize()); - } - - public void testIterator() { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - editor.setAsText( - "net.sf.acegisecurity.TargetObject.countLength=ROLE_ONE,ROLE_TWO,RUN_AS_ENTRY\r\nnet.sf.acegisecurity.TargetObject.make*=ROLE_NINE,ROLE_SUPERVISOR"); - - MethodDefinitionMap map = (MethodDefinitionMap) editor.getValue(); - Iterator iter = map.getConfigAttributeDefinitions(); - int counter = 0; - - while (iter.hasNext()) { - iter.next(); - counter++; - } - - assertEquals(3, counter); - } - - public void testMultiMethodParsing() { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - editor.setAsText( - "net.sf.acegisecurity.TargetObject.countLength=ROLE_ONE,ROLE_TWO,RUN_AS_ENTRY\r\nnet.sf.acegisecurity.TargetObject.make*=ROLE_NINE,ROLE_SUPERVISOR"); - - MethodDefinitionMap map = (MethodDefinitionMap) editor.getValue(); - assertEquals(3, map.getMethodMapSize()); - } - - public void testMultiMethodParsingWhereLaterMethodsOverrideEarlierMethods() - throws Exception { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - editor.setAsText( - "net.sf.acegisecurity.TargetObject.*=ROLE_GENERAL\r\nnet.sf.acegisecurity.TargetObject.makeLower*=ROLE_LOWER\r\nnet.sf.acegisecurity.TargetObject.make*=ROLE_MAKE\r\nnet.sf.acegisecurity.TargetObject.makeUpper*=ROLE_UPPER"); - - MethodDefinitionMap map = (MethodDefinitionMap) editor.getValue(); - assertEquals(4, map.getMethodMapSize()); - - ConfigAttributeDefinition returnedMakeLower = map.getAttributes(new MockMethodInvocation( - TargetObject.class, "makeLowerCase", - new Class[] {String.class})); - ConfigAttributeDefinition expectedMakeLower = new ConfigAttributeDefinition(); - expectedMakeLower.addConfigAttribute(new SecurityConfig("ROLE_LOWER")); - assertEquals(expectedMakeLower, returnedMakeLower); - - ConfigAttributeDefinition returnedMakeUpper = map.getAttributes(new MockMethodInvocation( - TargetObject.class, "makeUpperCase", - new Class[] {String.class})); - ConfigAttributeDefinition expectedMakeUpper = new ConfigAttributeDefinition(); - expectedMakeUpper.addConfigAttribute(new SecurityConfig("ROLE_UPPER")); - assertEquals(expectedMakeUpper, returnedMakeUpper); - - ConfigAttributeDefinition returnedCountLength = map.getAttributes(new MockMethodInvocation( - TargetObject.class, "countLength", - new Class[] {String.class})); - ConfigAttributeDefinition expectedCountLength = new ConfigAttributeDefinition(); - expectedCountLength.addConfigAttribute(new SecurityConfig( - "ROLE_GENERAL")); - assertEquals(expectedCountLength, returnedCountLength); - } - - public void testNullReturnsEmptyMap() { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - editor.setAsText(null); - - MethodDefinitionMap map = (MethodDefinitionMap) editor.getValue(); - assertEquals(0, map.getMethodMapSize()); - } - - public void testSingleMethodParsing() throws Exception { - MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor(); - editor.setAsText( - "net.sf.acegisecurity.TargetObject.countLength=ROLE_ONE,ROLE_TWO,RUN_AS_ENTRY"); - - MethodDefinitionMap map = (MethodDefinitionMap) editor.getValue(); - - ConfigAttributeDefinition returnedCountLength = map.getAttributes(new MockMethodInvocation( - TargetObject.class, "countLength", - new Class[] {String.class})); - ConfigAttributeDefinition expectedCountLength = new ConfigAttributeDefinition(); - expectedCountLength.addConfigAttribute(new SecurityConfig("ROLE_ONE")); - expectedCountLength.addConfigAttribute(new SecurityConfig("ROLE_TWO")); - expectedCountLength.addConfigAttribute(new SecurityConfig( - "RUN_AS_ENTRY")); - assertEquals(expectedCountLength, returnedCountLength); - } - - //~ Inner Classes ========================================================== - - private class MockMethodInvocation implements MethodInvocation { - Method method; - - public MockMethodInvocation(Class clazz, String methodName, - Class[] parameterTypes) throws NoSuchMethodException { - method = clazz.getMethod(methodName, parameterTypes); - } - - private MockMethodInvocation() { - super(); - } - - public Object[] getArguments() { - return null; - } - - public Method getMethod() { - return method; - } - - public AccessibleObject getStaticPart() { - return null; - } - - public Object getThis() { - return null; - } - - public Object proceed() throws Throwable { - return null; - } - } -} diff --git a/core/src/test/java/org/acegisecurity/MockAttributes.java b/core/src/test/java/org/acegisecurity/MockAttributes.java deleted file mode 100644 index 5db4e10ea4..0000000000 --- a/core/src/test/java/org/acegisecurity/MockAttributes.java +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright 2004 Acegi Technology Pty Limited - * - * 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 net.sf.acegisecurity; - -import org.springframework.metadata.Attributes; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - - -/** - * Used by the {@link MethodDefinitionAttributesTests}. - * - * @author Cameron Braid - * @author Ben Alex - */ -public class MockAttributes implements Attributes { - //~ Instance fields ======================================================== - - List classAttributes = Arrays.asList(new SecurityConfig[] {new SecurityConfig( - "MOCK_CLASS")}); - List classMethodAttributesCountLength = Arrays.asList(new String[] {new String( - "MOCK_CLASS_METHOD_COUNT_LENGTH")}); - List classMethodAttributesMakeLowerCase = Arrays.asList(new SecurityConfig[] {new SecurityConfig( - "MOCK_CLASS_METHOD_MAKE_LOWER_CASE")}); - List classMethodAttributesMakeUpperCase = Arrays.asList(new SecurityConfig[] {new SecurityConfig( - "MOCK_CLASS_METHOD_MAKE_UPPER_CASE")}); - List interfaceAttributes = Arrays.asList(new SecurityConfig[] {new SecurityConfig( - "MOCK_INTERFACE")}); - List interfaceMethodAttributesCountLength = Arrays.asList(new SecurityConfig[] {new SecurityConfig( - "MOCK_INTERFACE_METHOD_COUNT_LENGTH")}); - List interfaceMethodAttributesMakeLowerCase = Arrays.asList(new SecurityConfig[] {new SecurityConfig( - "MOCK_INTERFACE_METHOD_MAKE_LOWER_CASE")}); - List interfaceMethodAttributesMakeUpperCase = Arrays.asList(new SecurityConfig[] {new SecurityConfig( - "MOCK_INTERFACE_METHOD_MAKE_UPPER_CASE"), new SecurityConfig( - "RUN_AS")}); - - //~ Methods ================================================================ - - public Collection getAttributes(Class clazz) { - // Emphasise we return null for OtherTargetObject - if (clazz.equals(OtherTargetObject.class)) { - return null; - } - - // interface - if (clazz.equals(ITargetObject.class)) { - return interfaceAttributes; - } - - // class - if (clazz.equals(TargetObject.class)) { - return classAttributes; - } - - return null; - } - - public Collection getAttributes(Method method) { - // interface - if (method.getDeclaringClass().equals(ITargetObject.class)) { - if (method.getName().equals("countLength")) { - return interfaceMethodAttributesCountLength; - } - - if (method.getName().equals("makeLowerCase")) { - return interfaceMethodAttributesMakeLowerCase; - } - - if (method.getName().equals("makeUpperCase")) { - return interfaceMethodAttributesMakeUpperCase; - } - - if (method.getName().equals("publicMakeLowerCase")) { - throw new UnsupportedOperationException( - "mock support not implemented"); - } - } - - // class - if (method.getDeclaringClass().equals(TargetObject.class)) { - if (method.getName().equals("countLength")) { - return classMethodAttributesCountLength; - } - - if (method.getName().equals("makeLowerCase")) { - return classMethodAttributesMakeLowerCase; - } - - if (method.getName().equals("makeUpperCase")) { - return classMethodAttributesMakeUpperCase; - } - - if (method.getName().equals("publicMakeLowerCase")) { - throw new UnsupportedOperationException( - "mock support not implemented"); - } - } - - // other target object - if (method.getDeclaringClass().equals(OtherTargetObject.class)) { - if (method.getName().equals("countLength")) { - return classMethodAttributesCountLength; - } - - if (method.getName().equals("makeLowerCase")) { - return classMethodAttributesMakeLowerCase; - } - - if (method.getName().equals("makeUpperCase")) { - return null; // NB - } - - if (method.getName().equals("publicMakeLowerCase")) { - throw new UnsupportedOperationException( - "mock support not implemented"); - } - } - - return null; - } - - public Collection getAttributes(Class arg0, Class arg1) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Collection getAttributes(Field arg0, Class arg1) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Collection getAttributes(Field arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Collection getAttributes(Method arg0, Class arg1) { - throw new UnsupportedOperationException("mock method not implemented"); - } -} diff --git a/core/src/test/java/org/acegisecurity/SecurityInterceptorTests.java b/core/src/test/java/org/acegisecurity/SecurityInterceptorTests.java deleted file mode 100644 index f96cede2db..0000000000 --- a/core/src/test/java/org/acegisecurity/SecurityInterceptorTests.java +++ /dev/null @@ -1,420 +0,0 @@ -/* Copyright 2004 Acegi Technology Pty Limited - * - * 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 net.sf.acegisecurity; - -import junit.framework.TestCase; - -import net.sf.acegisecurity.context.ContextHolder; -import net.sf.acegisecurity.context.ContextImpl; -import net.sf.acegisecurity.context.SecureContext; -import net.sf.acegisecurity.context.SecureContextImpl; -import net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken; - -import org.aopalliance.intercept.MethodInvocation; - -import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader; - -import java.util.Iterator; -import java.util.List; -import java.util.Properties; -import java.util.Vector; - - -/** - * Tests {@link SecurityInterceptor}. - * - * @author Ben Alex - * @version $Id$ - */ -public class SecurityInterceptorTests extends TestCase { - //~ Constructors =========================================================== - - public SecurityInterceptorTests() { - super(); - } - - public SecurityInterceptorTests(String arg0) { - super(arg0); - } - - //~ Methods ================================================================ - - public final void setUp() throws Exception { - super.setUp(); - } - - public static void main(String[] args) { - junit.textui.TestRunner.run(SecurityInterceptorTests.class); - } - - public void testCallingAPublicMethodFacadeWillNotRepeatSecurityChecksWhenPassedToTheSecuredMethodItFronts() - throws Exception { - ITargetObject target = makeInterceptedTarget(); - String result = target.publicMakeLowerCase("HELLO"); - assertEquals("hello ContextHolder Not Security Aware", result); - - ContextHolder.setContext(null); - } - - public void testCallingAPublicMethodWhenPresentingASecureContextButWithoutAnyAuthenticationObject() - throws Exception { - SecureContext context = new SecureContextImpl(); - ContextHolder.setContext(context); - - ITargetObject target = makeInterceptedTarget(); - String result = target.publicMakeLowerCase("HELLO"); - assertEquals("hello Authentication empty", result); - - ContextHolder.setContext(null); - } - - public void testCallingAPublicMethodWhenPresentingAnAuthenticationObjectWillProperlySetItsIsAuthenticatedProperty() - throws Exception { - SecureContext context = new SecureContextImpl(); - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", - "Password", - new GrantedAuthority[] {new GrantedAuthorityImpl("MOCK_THIS_IS_NOT_REQUIRED_AS_IT_IS_PUBLIC")}); - assertTrue(!token.isAuthenticated()); - context.setAuthentication(token); - ContextHolder.setContext(context); - - ITargetObject target = makeInterceptedTarget(); - String result = target.publicMakeLowerCase("HELLO"); - assertEquals("hello net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken false", - result); - - ContextHolder.setContext(null); - } - - public void testDeniesWhenAppropriate() throws Exception { - SecureContext context = new SecureContextImpl(); - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", - "Password", - new GrantedAuthority[] {new GrantedAuthorityImpl("MOCK_NO_BENEFIT_TO_THIS_GRANTED_AUTHORITY")}); - context.setAuthentication(token); - ContextHolder.setContext(context); - - ITargetObject target = makeInterceptedTarget(); - - try { - target.makeUpperCase("HELLO"); - fail("Should have thrown AccessDeniedException"); - } catch (AccessDeniedException expected) { - assertTrue(true); - } - - ContextHolder.setContext(null); - } - - public void testGetters() { - MockAccessDecisionManager accessDecision = new MockAccessDecisionManager(); - MockRunAsManager runAs = new MockRunAsManager(); - MockAuthenticationManager authManager = new MockAuthenticationManager(); - MockMethodDefinitionSource methodSource = new MockMethodDefinitionSource(false, - true); - - SecurityInterceptor si = new SecurityInterceptor(); - si.setAccessDecisionManager(accessDecision); - si.setRunAsManager(runAs); - si.setAuthenticationManager(authManager); - si.setMethodDefinitionSource(methodSource); - - assertEquals(accessDecision, si.getAccessDecisionManager()); - assertEquals(runAs, si.getRunAsManager()); - assertEquals(authManager, si.getAuthenticationManager()); - assertEquals(methodSource, si.getMethodDefinitionSource()); - } - - public void testMethodCallWithRunAsReplacement() throws Exception { - SecureContext context = new SecureContextImpl(); - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", - "Password", - new GrantedAuthority[] {new GrantedAuthorityImpl("MOCK_UPPER")}); - context.setAuthentication(token); - ContextHolder.setContext(context); - - ITargetObject target = makeInterceptedTarget(); - String result = target.makeUpperCase("hello"); - assertEquals("HELLO net.sf.acegisecurity.MockRunAsAuthenticationToken true", - result); - - ContextHolder.setContext(null); - } - - public void testMethodCallWithoutRunAsReplacement() - throws Exception { - SecureContext context = new SecureContextImpl(); - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", - "Password", - new GrantedAuthority[] {new GrantedAuthorityImpl("MOCK_LOWER")}); - assertTrue(!token.isAuthenticated()); - context.setAuthentication(token); - ContextHolder.setContext(context); - - ITargetObject target = makeInterceptedTarget(); - String result = target.makeLowerCase("HELLO"); - - // Note we check the isAuthenticated becomes true in following line - assertEquals("hello net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken true", - result); - - ContextHolder.setContext(null); - } - - public void testRejectionOfEmptyContextHolder() throws Exception { - ITargetObject target = makeInterceptedTarget(); - - try { - target.makeUpperCase("hello"); - fail( - "Should have thrown AuthenticationCredentialsNotFoundException"); - } catch (AuthenticationCredentialsNotFoundException expected) { - assertTrue(true); - } - } - - public void testRejectionOfNonSecureContextOnContextHolder() - throws Exception { - ContextHolder.setContext(new ContextImpl()); - - ITargetObject target = makeInterceptedTarget(); - - try { - target.makeUpperCase("hello"); - fail( - "Should have thrown AuthenticationCredentialsNotFoundException"); - } catch (AuthenticationCredentialsNotFoundException expected) { - assertTrue(true); - } - - ContextHolder.setContext(null); - } - - public void testRejectionOfSecureContextThatContainsNoAuthenticationObject() - throws Exception { - ContextHolder.setContext(new SecureContextImpl()); - - ITargetObject target = makeInterceptedTarget(); - - try { - target.makeUpperCase("hello"); - fail( - "Should have thrown AuthenticationCredentialsNotFoundException"); - } catch (AuthenticationCredentialsNotFoundException expected) { - assertTrue(true); - } - - ContextHolder.setContext(null); - } - - public void testStartupCheckForAccessDecisionManager() { - SecurityInterceptor si = new SecurityInterceptor(); - si.setRunAsManager(new MockRunAsManager()); - si.setAuthenticationManager(new MockAuthenticationManager()); - - si.setMethodDefinitionSource(new MockMethodDefinitionSource(false, true)); - - try { - si.afterPropertiesSet(); - fail("Should have thrown IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertEquals("An AccessDecisionManager is required", - expected.getMessage()); - } - } - - public void testStartupCheckForAuthenticationManager() { - SecurityInterceptor si = new SecurityInterceptor(); - si.setAccessDecisionManager(new MockAccessDecisionManager()); - si.setRunAsManager(new MockRunAsManager()); - - si.setMethodDefinitionSource(new MockMethodDefinitionSource(false, true)); - - try { - si.afterPropertiesSet(); - fail("Should have thrown IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertEquals("An AuthenticationManager is required", - expected.getMessage()); - } - } - - public void testStartupCheckForMethodDefinitionSource() { - SecurityInterceptor si = new SecurityInterceptor(); - si.setAccessDecisionManager(new MockAccessDecisionManager()); - si.setRunAsManager(new MockRunAsManager()); - si.setAuthenticationManager(new MockAuthenticationManager()); - - try { - si.afterPropertiesSet(); - fail("Should have thrown IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertEquals("A MethodDefinitionSource is required", - expected.getMessage()); - } - } - - public void testStartupCheckForRunAsManager() { - SecurityInterceptor si = new SecurityInterceptor(); - si.setAccessDecisionManager(new MockAccessDecisionManager()); - si.setAuthenticationManager(new MockAuthenticationManager()); - - si.setMethodDefinitionSource(new MockMethodDefinitionSource(false, true)); - - try { - si.afterPropertiesSet(); - fail("Should have thrown IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertEquals("A RunAsManager is required", expected.getMessage()); - } - } - - public void testValidationFailsIfInvalidAttributePresented() { - SecurityInterceptor si = new SecurityInterceptor(); - si.setAccessDecisionManager(new MockAccessDecisionManager()); - si.setRunAsManager(new MockRunAsManager()); - si.setAuthenticationManager(new MockAuthenticationManager()); - - assertTrue(si.isValidateConfigAttributes()); // check default - si.setMethodDefinitionSource(new MockMethodDefinitionSource(true, true)); - - try { - si.afterPropertiesSet(); - fail("Should have thrown IllegalArgumentException"); - } catch (IllegalArgumentException expected) { - assertEquals("Unsupported configuration attributes: [ANOTHER_INVALID, INVALID_ATTRIBUTE]", - expected.getMessage()); - } - } - - public void testValidationNotAttemptedIfIsValidateConfigAttributesSetToFalse() { - SecurityInterceptor si = new SecurityInterceptor(); - si.setAccessDecisionManager(new MockAccessDecisionManager()); - si.setRunAsManager(new MockRunAsManager()); - si.setAuthenticationManager(new MockAuthenticationManager()); - - assertTrue(si.isValidateConfigAttributes()); // check default - si.setValidateConfigAttributes(false); - assertTrue(!si.isValidateConfigAttributes()); // check changed - - si.setMethodDefinitionSource(new MockMethodDefinitionSource(true, true)); - si.afterPropertiesSet(); - assertTrue(true); - } - - public void testValidationNotAttemptedIfMethodDefinitionSourceCannotReturnIterator() { - SecurityInterceptor si = new SecurityInterceptor(); - si.setAccessDecisionManager(new MockAccessDecisionManager()); - si.setRunAsManager(new MockRunAsManager()); - si.setAuthenticationManager(new MockAuthenticationManager()); - - assertTrue(si.isValidateConfigAttributes()); // check default - si.setMethodDefinitionSource(new MockMethodDefinitionSource(true, false)); - si.afterPropertiesSet(); - assertTrue(true); - } - - private ITargetObject makeInterceptedTarget() { - String PREFIX = "beans."; - DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); - Properties p = new Properties(); - p.setProperty(PREFIX + "authentication.class", - "net.sf.acegisecurity.MockAuthenticationManager"); - p.setProperty(PREFIX + "accessDecision.class", - "net.sf.acegisecurity.MockAccessDecisionManager"); - p.setProperty(PREFIX + "runAs.class", - "net.sf.acegisecurity.MockRunAsManager"); - - p.setProperty(PREFIX + "securityInterceptor.class", - "net.sf.acegisecurity.SecurityInterceptor"); - p.setProperty(PREFIX + "securityInterceptor.authenticationManager(ref)", - "authentication"); - p.setProperty(PREFIX + "securityInterceptor.accessDecisionManager(ref)", - "accessDecision"); - p.setProperty(PREFIX + "securityInterceptor.runAsManager(ref)", "runAs"); - p.setProperty(PREFIX + "securityInterceptor.methodDefinitionSource", - "net.sf.acegisecurity.ITargetObject.makeLower*=MOCK_LOWER\r\nnet.sf.acegisecurity.ITargetObject.makeUpper*=MOCK_UPPER,RUN_AS"); - - p.setProperty(PREFIX + "targetObject.class", - "net.sf.acegisecurity.TargetObject"); - p.setProperty(PREFIX + "target.class", - "org.springframework.aop.framework.ProxyFactoryBean"); - p.setProperty(PREFIX + "target.proxyInterfaces", - "net.sf.acegisecurity.ITargetObject"); - p.setProperty(PREFIX + "target.interceptorNames", - "securityInterceptor,targetObject"); - - (new PropertiesBeanDefinitionReader(lbf)).registerBeanDefinitions(p, - PREFIX); - - return (ITargetObject) lbf.getBean("target"); - } - - //~ Inner Classes ========================================================== - - private class MockMethodDefinitionSource implements MethodDefinitionSource { - private List list; - private boolean returnAnIterator; - - public MockMethodDefinitionSource(boolean includeInvalidAttributes, - boolean returnAnIteratorWhenRequested) { - returnAnIterator = returnAnIteratorWhenRequested; - list = new Vector(); - - ConfigAttributeDefinition def1 = new ConfigAttributeDefinition(); - def1.addConfigAttribute(new SecurityConfig("MOCK_LOWER")); - list.add(def1); - - if (includeInvalidAttributes) { - ConfigAttributeDefinition def2 = new ConfigAttributeDefinition(); - def2.addConfigAttribute(new SecurityConfig("MOCK_LOWER")); - def2.addConfigAttribute(new SecurityConfig("INVALID_ATTRIBUTE")); - list.add(def2); - } - - ConfigAttributeDefinition def3 = new ConfigAttributeDefinition(); - def3.addConfigAttribute(new SecurityConfig("MOCK_UPPER")); - def3.addConfigAttribute(new SecurityConfig("RUN_AS")); - list.add(def3); - - if (includeInvalidAttributes) { - ConfigAttributeDefinition def4 = new ConfigAttributeDefinition(); - def4.addConfigAttribute(new SecurityConfig("MOCK_SOMETHING")); - def4.addConfigAttribute(new SecurityConfig("ANOTHER_INVALID")); - list.add(def4); - } - } - - private MockMethodDefinitionSource() { - super(); - } - - public ConfigAttributeDefinition getAttributes( - MethodInvocation invocation) { - throw new UnsupportedOperationException( - "mock method not implemented"); - } - - public Iterator getConfigAttributeDefinitions() { - if (returnAnIterator) { - return list.iterator(); - } else { - return null; - } - } - } -} diff --git a/core/src/test/java/org/acegisecurity/adapters/AbstractIntegrationFilterTests.java b/core/src/test/java/org/acegisecurity/adapters/AbstractIntegrationFilterTests.java deleted file mode 100644 index 0aee382aaa..0000000000 --- a/core/src/test/java/org/acegisecurity/adapters/AbstractIntegrationFilterTests.java +++ /dev/null @@ -1,260 +0,0 @@ -/* Copyright 2004 Acegi Technology Pty Limited - * - * 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 net.sf.acegisecurity.adapters; - -import junit.framework.TestCase; - -import net.sf.acegisecurity.Authentication; -import net.sf.acegisecurity.GrantedAuthority; -import net.sf.acegisecurity.GrantedAuthorityImpl; -import net.sf.acegisecurity.context.Context; -import net.sf.acegisecurity.context.ContextHolder; -import net.sf.acegisecurity.context.SecureContext; -import net.sf.acegisecurity.context.SecureContextImpl; - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - - -/** - * Tests {@link AbstractIntegrationFilter}. - * - * @author Ben Alex - * @version $Id$ - */ -public class AbstractIntegrationFilterTests extends TestCase { - //~ Constructors =========================================================== - - public AbstractIntegrationFilterTests() { - super(); - } - - public AbstractIntegrationFilterTests(String arg0) { - super(arg0); - } - - //~ Methods ================================================================ - - public final void setUp() throws Exception { - super.setUp(); - } - - public static void main(String[] args) { - junit.textui.TestRunner.run(AbstractIntegrationFilterTests.class); - } - - public void testContextHolderContentsPreserved() throws Exception { - PrincipalAcegiUserToken principal = new PrincipalAcegiUserToken("key", - "someone", "password", - new GrantedAuthority[] {new GrantedAuthorityImpl("SOME_ROLE")}); - MockAbstractIntegrationFilterImpl filter = new MockAbstractIntegrationFilterImpl(principal); - MockFilterChain chain = new MockFilterChain(true, principal); - - MockSecureContextImpl secureContext = new MockSecureContextImpl( - "FOO_BAR"); - ContextHolder.setContext(secureContext); - assertEquals(secureContext, ContextHolder.getContext()); - - executeFilterInContainerSimulator(filter, null, null, chain); - - MockSecureContextImpl after = (MockSecureContextImpl) ContextHolder - .getContext(); - assertEquals(secureContext.getInfo(), after.getInfo()); - ContextHolder.setContext(null); - } - - public void testContextHolderHasAuthenticationRemoved() - throws Exception { - PrincipalAcegiUserToken principal = new PrincipalAcegiUserToken("key", - "someone", "password", - new GrantedAuthority[] {new GrantedAuthorityImpl("SOME_ROLE")}); - MockAbstractIntegrationFilterImpl filter = new MockAbstractIntegrationFilterImpl(principal); - MockFilterChain chain = new MockFilterChain(true, principal); - - SecureContext secureContext = new SecureContextImpl(); - secureContext.setAuthentication(principal); - ContextHolder.setContext(secureContext); - assertEquals(secureContext, ContextHolder.getContext()); - - executeFilterInContainerSimulator(filter, null, null, chain); - - SecureContext after = (SecureContext) ContextHolder.getContext(); - assertEquals(null, after.getAuthentication()); - ContextHolder.setContext(null); - } - - public void testIgnoredWhenConcreteClassReturnsANonAuthenticationObject() - throws Exception { - MockPrincipal principal = new MockPrincipal(); - MockAbstractIntegrationFilterImpl filter = new MockAbstractIntegrationFilterImpl(principal); - MockFilterChain chain = new MockFilterChain(false, null); - - Context before = ContextHolder.getContext(); - - if (before != null) { - if (before instanceof SecureContext) { - assertEquals(null, ((SecureContext) before).getAuthentication()); - } - } - - executeFilterInContainerSimulator(filter, null, null, chain); - - Context after = ContextHolder.getContext(); - - if (after != null) { - if (after instanceof SecureContext) { - assertEquals(null, ((SecureContext) after).getAuthentication()); - } - } - } - - public void testIgnoredWhenConcreteClassReturnsNullAuthenticationObject() - throws Exception { - MockAbstractIntegrationFilterImpl filter = new MockAbstractIntegrationFilterImpl(null); - MockFilterChain chain = new MockFilterChain(false, null); - - Context before = ContextHolder.getContext(); - - if (before != null) { - if (before instanceof SecureContext) { - assertEquals(null, ((SecureContext) before).getAuthentication()); - } - } - - executeFilterInContainerSimulator(filter, null, null, chain); - - Context after = ContextHolder.getContext(); - - if (after != null) { - if (after instanceof SecureContext) { - assertEquals(null, ((SecureContext) after).getAuthentication()); - } - } - } - - public void testSuccessWhenConcreteClassReturnsValidAuthenticationObject() - throws Exception { - PrincipalAcegiUserToken principal = new PrincipalAcegiUserToken("key", - "someone", "password", - new GrantedAuthority[] {new GrantedAuthorityImpl("SOME_ROLE")}); - MockAbstractIntegrationFilterImpl filter = new MockAbstractIntegrationFilterImpl(principal); - MockFilterChain chain = new MockFilterChain(true, principal); - - Context before = ContextHolder.getContext(); - - if (before != null) { - if (before instanceof SecureContext) { - assertEquals(null, ((SecureContext) before).getAuthentication()); - } - } - - executeFilterInContainerSimulator(filter, null, null, chain); - - Context after = ContextHolder.getContext(); - - if (after != null) { - if (after instanceof SecureContext) { - assertEquals(null, ((SecureContext) after).getAuthentication()); - } - } - } - - private void executeFilterInContainerSimulator(Filter filter, - ServletRequest request, ServletResponse response, - FilterChain filterChain) throws ServletException, IOException { - filter.init(null); - filter.doFilter(request, response, filterChain); - filter.destroy(); - } - - //~ Inner Classes ========================================================== - - private class MockAbstractIntegrationFilterImpl - extends AbstractIntegrationFilter { - private Object extractFromContainerResult; - - public MockAbstractIntegrationFilterImpl( - Object extractFromContainerResult) { - this.extractFromContainerResult = extractFromContainerResult; - } - - private MockAbstractIntegrationFilterImpl() { - super(); - } - - public Object extractFromContainer(ServletRequest request) { - return this.extractFromContainerResult; - } - } - - private class MockFilterChain implements FilterChain { - private Authentication expectedAuthenticationObjectInContextHolder; - private boolean expectContextHolderContainSecureContext = false; - - public MockFilterChain( - boolean expectContextHolderContainSecureContext, - Authentication expectedAuthenticationObjectInContextHolder) { - if ((expectedAuthenticationObjectInContextHolder != null) - && !expectContextHolderContainSecureContext) { - throw new IllegalArgumentException( - "If an Authentication object is expected, the ContextHolder should contain a SecureContext"); - } - - this.expectContextHolderContainSecureContext = expectContextHolderContainSecureContext; - this.expectedAuthenticationObjectInContextHolder = expectedAuthenticationObjectInContextHolder; - } - - private MockFilterChain() { - super(); - } - - public void doFilter(ServletRequest request, ServletResponse response) - throws IOException, ServletException { - if (expectContextHolderContainSecureContext) { - Context context = ContextHolder.getContext(); - - if (!(context instanceof SecureContext)) { - fail("ContextHolder should have contained SecureContext"); - } - } else { - if (ContextHolder.getContext() != null) { - fail("ContextHolder should have been null but wasn't"); - } - } - } - } - - private class MockSecureContextImpl extends SecureContextImpl { - private String info; - - public MockSecureContextImpl(String info) { - this.info = info; - } - - private MockSecureContextImpl() { - super(); - } - - public String getInfo() { - return this.info; - } - } -} diff --git a/core/src/test/java/org/acegisecurity/adapters/AutoIntegrationFilterTests.java b/core/src/test/java/org/acegisecurity/adapters/AutoIntegrationFilterTests.java deleted file mode 100644 index 87d0ba841e..0000000000 --- a/core/src/test/java/org/acegisecurity/adapters/AutoIntegrationFilterTests.java +++ /dev/null @@ -1,149 +0,0 @@ -/* Copyright 2004 Acegi Technology Pty Limited - * - * 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 net.sf.acegisecurity.adapters; - -import junit.framework.TestCase; - -import net.sf.acegisecurity.GrantedAuthority; -import net.sf.acegisecurity.GrantedAuthorityImpl; -import net.sf.acegisecurity.adapters.jboss.JbossIntegrationFilter; -import net.sf.acegisecurity.adapters.jboss.MockInitialContext; -import net.sf.acegisecurity.adapters.jboss.MockJbossIntegrationFilter; - -import org.jboss.security.SimplePrincipal; - -import java.security.Principal; - -import java.util.HashSet; -import java.util.Set; - -import javax.naming.Context; - -import javax.security.auth.Subject; - - -/** - * Tests {@link AutoIntegrationFilter}. - * - * @author Ben Alex - * @version $Id$ - */ -public class AutoIntegrationFilterTests extends TestCase { - //~ Constructors =========================================================== - - public AutoIntegrationFilterTests() { - super(); - } - - public AutoIntegrationFilterTests(String arg0) { - super(arg0); - } - - //~ Methods ================================================================ - - public final void setUp() throws Exception { - super.setUp(); - } - - public static void main(String[] args) { - junit.textui.TestRunner.run(AutoIntegrationFilterTests.class); - } - - public void testDetectsAuthenticationObjectInHttpRequest() { - AutoIntegrationFilter filter = new AutoIntegrationFilter(); - PrincipalAcegiUserToken principal = new PrincipalAcegiUserToken("key", - "someone", "password", - new GrantedAuthority[] {new GrantedAuthorityImpl("SOME_ROLE")}); - Object result = filter.extractFromContainer(new MockHttpServletRequest( - principal)); - - if (!(result instanceof PrincipalAcegiUserToken)) { - fail("Should have returned PrincipalAcegiUserToken"); - } - - PrincipalAcegiUserToken castResult = (PrincipalAcegiUserToken) result; - assertEquals(principal, result); - } - - public void testDetectsAuthenticationObjectInJboss() { - // Prepare a mock Jboss environment reflecting completed authentication - PrincipalAcegiUserToken principal = new PrincipalAcegiUserToken("key", - "someone", "password", - new GrantedAuthority[] {new GrantedAuthorityImpl("SOME_ROLE")}); - Context context = new MockInitialContext(makeIntoSubject(principal)); - JbossIntegrationFilter jbossFilter = new MockJbossIntegrationFilter(context); - - // Create a SimplePrincipal, which is what JBoss places into HttpRequest - SimplePrincipal simplePrincipal = new SimplePrincipal("TEST"); - - // Now try to extract authentication information via our mock AutoIntegrationFilter - AutoIntegrationFilter filter = new MockAutoIntegrationFilterJboss(jbossFilter); - Object result = filter.extractFromContainer(new MockHttpServletRequest( - simplePrincipal)); - - System.out.println(result); - - if (!(result instanceof PrincipalAcegiUserToken)) { - fail("Should have returned PrincipalAcegiUserToken"); - } - - PrincipalAcegiUserToken castResult = (PrincipalAcegiUserToken) result; - assertEquals(principal, result); - } - - public void testHandlesIfHttpRequestIsNullForSomeReason() { - AutoIntegrationFilter filter = new AutoIntegrationFilter(); - assertEquals(null, filter.extractFromContainer(null)); - } - - public void testHandlesIfThereIsNoPrincipal() { - AutoIntegrationFilter filter = new AutoIntegrationFilter(); - assertEquals(null, - filter.extractFromContainer(new MockHttpServletRequest(null))); - } - - public void testReturnsNullIfNonAuthenticationObjectInHttpRequest() { - AutoIntegrationFilter filter = new AutoIntegrationFilter(); - assertEquals(null, - filter.extractFromContainer( - new MockHttpServletRequest(new MockPrincipal()))); - } - - private Subject makeIntoSubject(Principal principal) { - Set principals = new HashSet(); - principals.add(principal); - - return new Subject(false, principals, new HashSet(), new HashSet()); - } - - //~ Inner Classes ========================================================== - - private class MockAutoIntegrationFilterJboss extends AutoIntegrationFilter { - private JbossIntegrationFilter filter; - - public MockAutoIntegrationFilterJboss(JbossIntegrationFilter filter) { - this.filter = filter; - } - - private MockAutoIntegrationFilterJboss() { - super(); - } - - protected JbossIntegrationFilter getJbossIntegrationFilter() { - return this.filter; - } - } -} diff --git a/core/src/test/java/org/acegisecurity/adapters/MockHttpServletRequest.java b/core/src/test/java/org/acegisecurity/adapters/MockHttpServletRequest.java deleted file mode 100644 index bdff24276e..0000000000 --- a/core/src/test/java/org/acegisecurity/adapters/MockHttpServletRequest.java +++ /dev/null @@ -1,257 +0,0 @@ -/* Copyright 2004 Acegi Technology Pty Limited - * - * 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 net.sf.acegisecurity.adapters; - -import java.io.BufferedReader; -import java.io.IOException; - -import java.security.Principal; - -import java.util.Enumeration; -import java.util.Locale; -import java.util.Map; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletInputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - - -/** - * Mocks a HttpServletRequest and provides the - * getUserPrincipal() method. - * - * @author Ben Alex - * @version $Id$ - */ -public class MockHttpServletRequest implements HttpServletRequest { - //~ Instance fields ======================================================== - - private Principal principal; - - //~ Constructors =========================================================== - - public MockHttpServletRequest(Principal principal) { - this.principal = principal; - } - - private MockHttpServletRequest() { - super(); - } - - //~ Methods ================================================================ - - public void setAttribute(String arg0, Object arg1) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Object getAttribute(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Enumeration getAttributeNames() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getAuthType() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public void setCharacterEncoding(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getCharacterEncoding() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public int getContentLength() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getContentType() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getContextPath() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Cookie[] getCookies() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public long getDateHeader(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getHeader(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Enumeration getHeaderNames() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Enumeration getHeaders(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public ServletInputStream getInputStream() throws IOException { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public int getIntHeader(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Locale getLocale() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Enumeration getLocales() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getMethod() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getParameter(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Map getParameterMap() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Enumeration getParameterNames() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String[] getParameterValues(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getPathInfo() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getPathTranslated() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getProtocol() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getQueryString() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public BufferedReader getReader() throws IOException { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getRealPath(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getRemoteAddr() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getRemoteHost() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getRemoteUser() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public RequestDispatcher getRequestDispatcher(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getRequestURI() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public StringBuffer getRequestURL() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getRequestedSessionId() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public boolean isRequestedSessionIdFromCookie() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public boolean isRequestedSessionIdFromURL() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public boolean isRequestedSessionIdFromUrl() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public boolean isRequestedSessionIdValid() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getScheme() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public boolean isSecure() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getServerName() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public int getServerPort() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public String getServletPath() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public HttpSession getSession(boolean arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public HttpSession getSession() { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public boolean isUserInRole(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } - - public Principal getUserPrincipal() { - return this.principal; - } - - public void removeAttribute(String arg0) { - throw new UnsupportedOperationException("mock method not implemented"); - } -}