mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-10-30 22:28:46 +00:00 
			
		
		
		
	Initial commit.
This commit is contained in:
		
							parent
							
								
									4091550764
								
							
						
					
					
						commit
						c220ff583c
					
				| @ -0,0 +1,130 @@ | ||||
| /* 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.jboss; | ||||
| 
 | ||||
| import junit.framework.TestCase; | ||||
| 
 | ||||
| import net.sf.acegisecurity.GrantedAuthority; | ||||
| import net.sf.acegisecurity.GrantedAuthorityImpl; | ||||
| import net.sf.acegisecurity.adapters.MockHttpServletRequest; | ||||
| import net.sf.acegisecurity.adapters.MockPrincipal; | ||||
| import net.sf.acegisecurity.adapters.PrincipalAcegiUserToken; | ||||
| 
 | ||||
| import java.security.Principal; | ||||
| 
 | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| import javax.naming.Context; | ||||
| 
 | ||||
| import javax.security.auth.Subject; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Tests {@link JbossIntegrationFilter}. | ||||
|  * | ||||
|  * @author Ben Alex | ||||
|  * @version $Id$ | ||||
|  */ | ||||
| public class JbossIntegrationFilterTests extends TestCase { | ||||
|     //~ Constructors =========================================================== | ||||
| 
 | ||||
|     public JbossIntegrationFilterTests() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     public JbossIntegrationFilterTests(String arg0) { | ||||
|         super(arg0); | ||||
|     } | ||||
| 
 | ||||
|     //~ Methods ================================================================ | ||||
| 
 | ||||
|     public final void setUp() throws Exception { | ||||
|         super.setUp(); | ||||
|     } | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
|         junit.textui.TestRunner.run(JbossIntegrationFilterTests.class); | ||||
|     } | ||||
| 
 | ||||
|     public void testCorrectOperation() { | ||||
|         PrincipalAcegiUserToken principal = new PrincipalAcegiUserToken("key", | ||||
|                 "someone", "password", | ||||
|                 new GrantedAuthority[] {new GrantedAuthorityImpl("SOME_ROLE")}); | ||||
| 
 | ||||
|         JbossIntegrationFilter filter = new MockJbossIntegrationFilter(new MockInitialContext( | ||||
|                     makeIntoSubject(principal))); | ||||
| 
 | ||||
|         Object result = filter.extractFromContainer(new MockHttpServletRequest( | ||||
|                     null)); | ||||
| 
 | ||||
|         if (!(result instanceof PrincipalAcegiUserToken)) { | ||||
|             fail("Should have returned PrincipalAcegiUserToken"); | ||||
|         } | ||||
| 
 | ||||
|         PrincipalAcegiUserToken castResult = (PrincipalAcegiUserToken) result; | ||||
|         assertEquals(principal, result); | ||||
|     } | ||||
| 
 | ||||
|     public void testReturnsNullIfContextReturnsSomethingOtherThanASubject() { | ||||
|         JbossIntegrationFilter filter = new MockJbossIntegrationFilter(new MockInitialContext( | ||||
|                     "THIS_IS_NOT_A_SUBJECT")); | ||||
|         assertEquals(null, | ||||
|             filter.extractFromContainer(new MockHttpServletRequest(null))); | ||||
|     } | ||||
| 
 | ||||
|     public void testReturnsNullIfInitialContextHasNullPrincipal() { | ||||
|         JbossIntegrationFilter filter = new MockJbossIntegrationFilter(new MockInitialContext( | ||||
|                     makeIntoSubject(null))); | ||||
|         assertEquals(null, | ||||
|             filter.extractFromContainer(new MockHttpServletRequest(null))); | ||||
|     } | ||||
| 
 | ||||
|     public void testReturnsNullIfInitialContextHasNullSubject() { | ||||
|         JbossIntegrationFilter filter = new MockJbossIntegrationFilter(new MockInitialContext( | ||||
|                     null)); | ||||
|         assertEquals(null, | ||||
|             filter.extractFromContainer(new MockHttpServletRequest(null))); | ||||
|     } | ||||
| 
 | ||||
|     public void testReturnsNullIfInitialContextIsNull() { | ||||
|         JbossIntegrationFilter filter = new MockJbossIntegrationFilter(null); | ||||
| 
 | ||||
|         Object result = filter.extractFromContainer(new MockHttpServletRequest( | ||||
|                     null)); | ||||
|         assertEquals(null, filter.extractFromContainer(null)); | ||||
|     } | ||||
| 
 | ||||
|     public void testReturnsNullIfPrincipalNotAnAuthenticationImplementation() { | ||||
|         JbossIntegrationFilter filter = new MockJbossIntegrationFilter(new MockInitialContext( | ||||
|                     makeIntoSubject(new MockPrincipal()))); | ||||
|         assertEquals(null, | ||||
|             filter.extractFromContainer(new MockHttpServletRequest(null))); | ||||
|     } | ||||
| 
 | ||||
|     public void testTestingObjectReturnsInitialContext() | ||||
|         throws Exception { | ||||
|         JbossIntegrationFilter filter = new JbossIntegrationFilter(); | ||||
|         assertTrue(filter.getLookupContext() instanceof Context); | ||||
|     } | ||||
| 
 | ||||
|     private Subject makeIntoSubject(Principal principal) { | ||||
|         Set principals = new HashSet(); | ||||
|         principals.add(principal); | ||||
| 
 | ||||
|         return new Subject(false, principals, new HashSet(), new HashSet()); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,171 @@ | ||||
| /* 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.jboss; | ||||
| 
 | ||||
| import java.util.Hashtable; | ||||
| 
 | ||||
| import javax.naming.Context; | ||||
| import javax.naming.Name; | ||||
| import javax.naming.NameParser; | ||||
| import javax.naming.NamingEnumeration; | ||||
| import javax.naming.NamingException; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Mocks a <code>javax.naming.Context</code> and returns an <code>Object</code> | ||||
|  * when queried for address <code>java:comp/env/security/subject</code>. | ||||
|  * | ||||
|  * @author Ben Alex | ||||
|  * @version $Id$ | ||||
|  */ | ||||
| public class MockInitialContext implements Context { | ||||
|     //~ Instance fields ======================================================== | ||||
| 
 | ||||
|     private Object object; | ||||
| 
 | ||||
|     //~ Constructors =========================================================== | ||||
| 
 | ||||
|     public MockInitialContext(Object object) { | ||||
|         this.object = object; | ||||
|     } | ||||
| 
 | ||||
|     private MockInitialContext() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     //~ Methods ================================================================ | ||||
| 
 | ||||
|     public Hashtable getEnvironment() throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public String getNameInNamespace() throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public NameParser getNameParser(String name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public NameParser getNameParser(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Object addToEnvironment(String propName, Object propVal) | ||||
|         throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void bind(String name, Object obj) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void bind(Name name, Object obj) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void close() throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public String composeName(String name, String prefix) | ||||
|         throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Name composeName(Name name, Name prefix) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Context createSubcontext(String name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Context createSubcontext(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void destroySubcontext(String name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void destroySubcontext(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public NamingEnumeration list(String name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public NamingEnumeration list(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public NamingEnumeration listBindings(String name) | ||||
|         throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public NamingEnumeration listBindings(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Object lookup(String name) throws NamingException { | ||||
|         return this.object; | ||||
|     } | ||||
| 
 | ||||
|     public Object lookup(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Object lookupLink(String name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Object lookupLink(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void rebind(String name, Object obj) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void rebind(Name name, Object obj) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public Object removeFromEnvironment(String propName) | ||||
|         throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void rename(String oldName, String newName) | ||||
|         throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void rename(Name oldName, Name newName) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void unbind(String name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| 
 | ||||
|     public void unbind(Name name) throws NamingException { | ||||
|         throw new UnsupportedOperationException("mock method not implemented"); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,49 @@ | ||||
| /* 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.jboss; | ||||
| 
 | ||||
| import javax.naming.Context; | ||||
| import javax.naming.NamingException; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Provides mock of <code>JbossIntegrationFilter</code>, using a lookup | ||||
|  * <code>Context</code> provided in the constructor. | ||||
|  * | ||||
|  * @author Ben Alex | ||||
|  * @version $Id$ | ||||
|  */ | ||||
| public class MockJbossIntegrationFilter extends JbossIntegrationFilter { | ||||
|     //~ Instance fields ======================================================== | ||||
| 
 | ||||
|     private Context context; | ||||
| 
 | ||||
|     //~ Constructors =========================================================== | ||||
| 
 | ||||
|     public MockJbossIntegrationFilter(Context context) { | ||||
|         this.context = context; | ||||
|     } | ||||
| 
 | ||||
|     private MockJbossIntegrationFilter() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     //~ Methods ================================================================ | ||||
| 
 | ||||
|     protected Context getLookupContext() throws NamingException { | ||||
|         return this.context; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,260 @@ | ||||
| /* 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; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,149 @@ | ||||
| /* 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; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,77 @@ | ||||
| /* 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; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Tests {@link HttpRequestIntegrationFilter}. | ||||
|  * | ||||
|  * @author Ben Alex | ||||
|  * @version $Id$ | ||||
|  */ | ||||
| public class HttpRequestIntegrationFilterTests extends TestCase { | ||||
|     //~ Constructors =========================================================== | ||||
| 
 | ||||
|     public HttpRequestIntegrationFilterTests() { | ||||
|         super(); | ||||
|     } | ||||
| 
 | ||||
|     public HttpRequestIntegrationFilterTests(String arg0) { | ||||
|         super(arg0); | ||||
|     } | ||||
| 
 | ||||
|     //~ Methods ================================================================ | ||||
| 
 | ||||
|     public final void setUp() throws Exception { | ||||
|         super.setUp(); | ||||
|     } | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
|         junit.textui.TestRunner.run(HttpRequestIntegrationFilterTests.class); | ||||
|     } | ||||
| 
 | ||||
|     public void testCorrectOperation() { | ||||
|         HttpRequestIntegrationFilter filter = new HttpRequestIntegrationFilter(); | ||||
|         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 testHandlesIfHttpRequestIsNullForSomeReason() { | ||||
|         HttpRequestIntegrationFilter filter = new HttpRequestIntegrationFilter(); | ||||
|         assertEquals(null, filter.extractFromContainer(null)); | ||||
|     } | ||||
| 
 | ||||
|     public void testHandlesIfThereIsNoPrincipal() { | ||||
|         HttpRequestIntegrationFilter filter = new HttpRequestIntegrationFilter(); | ||||
|         assertEquals(null, | ||||
|             filter.extractFromContainer(new MockHttpServletRequest(null))); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,257 @@ | ||||
| /* 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 <code>HttpServletRequest</code> and provides the | ||||
|  * <code>getUserPrincipal()</code> 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"); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,33 @@ | ||||
| /* 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.security.Principal; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Mocks a <code>Principal</code>. | ||||
|  * | ||||
|  * @author Ben Alex | ||||
|  * @version $Id$ | ||||
|  */ | ||||
| public class MockPrincipal implements Principal { | ||||
|     //~ Methods ================================================================ | ||||
| 
 | ||||
|     public String getName() { | ||||
|         return "MockPrincipal"; | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user