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…
Reference in New Issue