⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daoauthenticationprovidertests.java

📁 acegi构造安全的java系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* Copyright 2004, 2005, 2006 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.providers.dao;import junit.framework.TestCase;import org.acegisecurity.AccountExpiredException;import org.acegisecurity.Authentication;import org.acegisecurity.AuthenticationServiceException;import org.acegisecurity.BadCredentialsException;import org.acegisecurity.CredentialsExpiredException;import org.acegisecurity.DisabledException;import org.acegisecurity.GrantedAuthority;import org.acegisecurity.GrantedAuthorityImpl;import org.acegisecurity.LockedException;import org.acegisecurity.providers.TestingAuthenticationToken;import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;import org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache;import org.acegisecurity.providers.dao.cache.NullUserCache;import org.acegisecurity.providers.dao.salt.SystemWideSaltSource;import org.acegisecurity.providers.encoding.ShaPasswordEncoder;import org.acegisecurity.userdetails.User;import org.acegisecurity.userdetails.UserDetails;import org.acegisecurity.userdetails.UserDetailsService;import org.acegisecurity.userdetails.UsernameNotFoundException;import org.springframework.dao.DataAccessException;import org.springframework.dao.DataRetrievalFailureException;import java.util.HashMap;import java.util.Map;/** * Tests {@link DaoAuthenticationProvider}. * * @author Ben Alex * @version $Id: DaoAuthenticationProviderTests.java 1857 2007-05-24 00:47:12Z benalex $ */public class DaoAuthenticationProviderTests extends TestCase {    //~ Methods ========================================================================================================    public static void main(String[] args) {        junit.textui.TestRunner.run(DaoAuthenticationProviderTests.class);    }    public final void setUp() throws Exception {        super.setUp();    }    public void testAuthenticateFailsForIncorrectPasswordCase() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", "KOala");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertTrue(true);        }    }    public void testReceivedBadCredentialsWhenCredentialsNotProvided() {    	// Test related to SEC-434        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());    	UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken("marissa", null);    	try {    		provider.authenticate(authenticationToken); // null pointer exception    		fail("Expected BadCredenialsException");    	} catch (BadCredentialsException expected) {    		assertTrue(true);    	}    }        public void testAuthenticateFailsIfAccountExpired() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserPeterAccountExpired());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown AccountExpiredException");        } catch (AccountExpiredException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsIfAccountLocked() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserPeterAccountLocked());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown LockedException");        } catch (LockedException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsIfCredentialsExpired() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserPeterCredentialsExpired());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown CredentialsExpiredException");        } catch (CredentialsExpiredException expected) {            assertTrue(true);        }        // Check that wrong password causes BadCredentialsException, rather than CredentialsExpiredException        token = new UsernamePasswordAuthenticationToken("peter", "wrong_password");        try {            provider.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsIfUserDisabled() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserPeter());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown DisabledException");        } catch (DisabledException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsWhenAuthenticationDaoHasBackendFailure() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", "koala");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoSimulateBackendError());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown AuthenticationServiceException");        } catch (AuthenticationServiceException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsWithEmptyUsername() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(null, "koala");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsWithInvalidPassword() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa",                "INVALID_PASSWORD");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsWithInvalidUsernameAndHideUserNotFoundExceptionFalse() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("INVALID_USER", "koala");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setHideUserNotFoundExceptions(false); // we want UsernameNotFoundExceptions        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown UsernameNotFoundException");        } catch (UsernameNotFoundException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsWithInvalidUsernameAndHideUserNotFoundExceptionsWithDefaultOfTrue() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("INVALID_USER", "koala");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        assertTrue(provider.isHideUserNotFoundExceptions());        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertTrue(true);        }    }    public void testAuthenticateFailsWithMixedCaseUsernameIfDefaultChanged() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("MaRiSSA", "koala");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());        try {            provider.authenticate(token);            fail("Should have thrown BadCredentialsException");        } catch (BadCredentialsException expected) {            assertTrue(true);        }    }    public void testAuthenticates() {        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("marissa", "koala");        token.setDetails("192.168.0.1");        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();        provider.setUserDetailsService(new MockAuthenticationDaoUserMarissa());        provider.setUserCache(new MockUserCache());        Authentication result = provider.authenticate(token);        if (!(result instanceof UsernamePasswordAuthenticationToken)) {            fail("Should have returned instance of UsernamePasswordAuthenticationToken");        }        UsernamePasswordAuthenticationToken castResult = (UsernamePasswordAuthenticationToken) result;        assertEquals(User.class, castResult.getPrincipal().getClass());        assertEquals("koala", castResult.getCredentials());        assertEquals("ROLE_ONE", castResult.getAuthorities()[0].getAuthority());        assertEquals("ROLE_TWO", castResult.getAuthorities()[1].getAuthority());        assertEquals("192.168.0.1", castResult.getDetails());    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -