From 5475ab0575782f508caf8c070f2794e090578940 Mon Sep 17 00:00:00 2001
From: Luke Taylor
* Concrete implementations of this class override this method to provide diff --git a/core/src/test/java/org/acegisecurity/AbstractAuthenticationManagerTests.java b/core/src/test/java/org/acegisecurity/AbstractAuthenticationManagerTests.java new file mode 100644 index 0000000000..982f6f1872 --- /dev/null +++ b/core/src/test/java/org/acegisecurity/AbstractAuthenticationManagerTests.java @@ -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; + } + }; + } +}