| 
					
				 | 
			
			
				@@ -0,0 +1,82 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Copyright 2004, 2005 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 org.acegisecurity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import junit.framework.TestCase; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.acegisecurity.providers.TestingAuthenticationToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Tests {@link AbstractAuthenticationManager}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author Luke Taylor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @version $Id$ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class AbstractAuthenticationManagerTests extends TestCase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //~ Constructors =========================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AbstractAuthenticationManagerTests() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AbstractAuthenticationManagerTests(String arg0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super(arg0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //~ Methods ================================================================ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void testDetailsAreSetOnAuthenticationTokenIfNotAlreadySetByProvider() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AuthenticationManager authMgr = createAuthenticationManager(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Object details = new Object(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TestingAuthenticationToken request = createAuthenticationToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        request.setDetails(details); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Authentication result = authMgr.authenticate(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assertEquals(details, result.getDetails()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void testDetailsAreNotSetOnAuthenticationTokenIfAlreadySetByProvider() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Object requestDetails = new String("(Request Details)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Object resultDetails = new String("(Result Details)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        AuthenticationManager authMgr = createAuthenticationManager(resultDetails); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TestingAuthenticationToken request = createAuthenticationToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        request.setDetails(requestDetails); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Authentication result = authMgr.authenticate(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        assertEquals(resultDetails, result.getDetails()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private TestingAuthenticationToken createAuthenticationToken() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return new TestingAuthenticationToken("name","password", new GrantedAuthorityImpl[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Creates an AuthenticationManager which will return a token with the given 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * details object set on it. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private AuthenticationManager createAuthenticationManager(final Object resultDetails) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return new AbstractAuthenticationManager() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            protected Authentication doAuthentication(Authentication authentication) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throws AuthenticationException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TestingAuthenticationToken token = createAuthenticationToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                token.setDetails(resultDetails); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return token; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |