| 
					
				 | 
			
			
				@@ -0,0 +1,116 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package net.sf.acegisecurity.ui.x509; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import junit.framework.TestCase; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import org.mortbay.http.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//import org.mortbay.jetty.servlet.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.net.URL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.security.cert.X509Certificate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.context.security.SecureContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.context.security.SecureContextUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.context.security.SecureContextImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.context.ContextHolder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.providers.x509.X509TestUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.ui.cas.CasProcessingFilter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.FilterChain; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.ServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.ServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.ServletException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author Luke 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class X509ProcessingFilterTests extends TestCase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //~ Constructors =========================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public X509ProcessingFilterTests() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public X509ProcessingFilterTests(String arg0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super(arg0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //~ Methods ================================================================ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public final void setUp() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super.setUp(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void testNormalOperation() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MockHttpServletRequest request = new MockHttpServletRequest(null, new MockHttpSession()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MockHttpServletResponse response = new MockHttpServletResponse(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        FilterChain chain = new MockFilterChain(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        request.setAttribute("javax.servlet.request.X509Certificate", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new X509Certificate[] {X509TestUtils.buildTestCertificate()}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        MockAuthenticationManager authMgr = new MockAuthenticationManager(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ContextHolder.setContext(new SecureContextImpl()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SecureContext ctx = SecureContextUtils.getSecureContext(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ctx.setAuthentication(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        X509ProcessingFilter filter = new X509ProcessingFilter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter.setAuthenticationManager(authMgr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter.afterPropertiesSet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter.init(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        filter.doFilter(request, response, chain); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Authentication result = ctx.getAuthentication(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assertNotNull(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //~ Inner Classes ========================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private class MockFilterChain implements FilterChain { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public void doFilter(ServletRequest arg0, ServletResponse arg1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throws IOException, ServletException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // do nothing. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void testFilterIntegration() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        // set up server. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        HttpServer server = new HttpServer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            SunJsseListener listener = new SunJsseListener(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            listener.setNeedClientAuth(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            listener.setPort(9443); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+////            listener.setKeystore(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            server.addListener(listener); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // map servlet. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            HttpContext context = server.getContext("/"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+////            ServletHandler handler = new ServletHandler(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+////            handler.addServlet("MyServlet", "/myServlet", MyServlet.class.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+////            context.addHandler(handler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // start server. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            server.start(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // test client code against url. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            URL url = new URL("http://localhost:" + 9443 + "/myServlet"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//          server.stop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |