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

📄 abstractprocessingfiltertests.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.ui;import junit.framework.TestCase;import org.acegisecurity.AccountExpiredException;import org.acegisecurity.Authentication;import org.acegisecurity.AuthenticationException;import org.acegisecurity.BadCredentialsException;import org.acegisecurity.GrantedAuthority;import org.acegisecurity.GrantedAuthorityImpl;import org.acegisecurity.MockAuthenticationManager;import org.acegisecurity.context.SecurityContextHolder;import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;import org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices;import org.acegisecurity.ui.savedrequest.SavedRequest;import org.acegisecurity.util.PortResolverImpl;import org.springframework.mock.web.MockFilterConfig;import org.springframework.mock.web.MockHttpServletRequest;import org.springframework.mock.web.MockHttpServletResponse;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.Properties;/** * Tests {@link AbstractProcessingFilter}. * * @author Ben Alex * @version $Id: AbstractProcessingFilterTests.java 1861 2007-05-25 01:24:07Z benalex $ */public class AbstractProcessingFilterTests extends TestCase {    //~ Constructors ===================================================================================================    public AbstractProcessingFilterTests() {        super();    }    public AbstractProcessingFilterTests(String arg0) {        super(arg0);    }    //~ Methods ========================================================================================================    private MockHttpServletRequest createMockRequest() {        MockHttpServletRequest request = new MockHttpServletRequest();        request.setServletPath("/j_mock_post");        request.setScheme("http");        request.setServerName("www.example.com");        request.setRequestURI("/mycontext/j_mock_post");        request.setContextPath("/mycontext");        return request;    }    private void executeFilterInContainerSimulator(FilterConfig filterConfig, Filter filter, ServletRequest request,        ServletResponse response, FilterChain filterChain)        throws ServletException, IOException {        filter.init(filterConfig);        filter.doFilter(request, response, filterChain);        filter.destroy();    }    public static void main(String[] args) {        junit.textui.TestRunner.run(AbstractProcessingFilterTests.class);    }    private SavedRequest makeSavedRequestForUrl() {        MockHttpServletRequest request = createMockRequest();        request.setServletPath("/some_protected_file.html");        request.setScheme("http");        request.setServerName("www.example.com");        request.setRequestURI("/mycontext/some_protected_file.html");        return new SavedRequest(request, new PortResolverImpl());    }    protected void setUp() throws Exception {        super.setUp();        SecurityContextHolder.clearContext();    }    protected void tearDown() throws Exception {        super.tearDown();        SecurityContextHolder.clearContext();    }    public void testDefaultProcessesFilterUrlWithPathParameter() {        MockHttpServletRequest request = createMockRequest();        MockHttpServletResponse response = new MockHttpServletResponse();        MockAbstractProcessingFilter filter = new MockAbstractProcessingFilter();        filter.setFilterProcessesUrl("/j_acegi_security_check");        request.setRequestURI("/mycontext/j_acegi_security_check;jsessionid=I8MIONOSTHOR");        assertTrue(filter.requiresAuthentication(request, response));    }    public void testDoFilterWithNonHttpServletRequestDetected()        throws Exception {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        try {            filter.doFilter(null, new MockHttpServletResponse(), new MockFilterChain());            fail("Should have thrown ServletException");        } catch (ServletException expected) {            assertEquals("Can only process HttpServletRequest", expected.getMessage());        }    }    public void testDoFilterWithNonHttpServletResponseDetected()        throws Exception {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        try {            filter.doFilter(new MockHttpServletRequest(null, null), null, new MockFilterChain());            fail("Should have thrown ServletException");        } catch (ServletException expected) {            assertEquals("Can only process HttpServletResponse", expected.getMessage());        }    }    public void testFailedAuthenticationRedirectsAppropriately()        throws Exception {        // Setup our HTTP request        MockHttpServletRequest request = createMockRequest();        // Setup our filter configuration        MockFilterConfig config = new MockFilterConfig(null, null);        // Setup our expectation that the filter chain will not be invoked, as we redirect to authenticationFailureUrl        MockFilterChain chain = new MockFilterChain(false);        MockHttpServletResponse response = new MockHttpServletResponse();        // Setup our test object, to deny access        MockAbstractProcessingFilter filter = new MockAbstractProcessingFilter(false);        filter.setAuthenticationFailureUrl("/failed.jsp");        // Test        executeFilterInContainerSimulator(config, filter, request, response, chain);        assertEquals("/mycontext/failed.jsp", response.getRedirectedUrl());        assertNull(SecurityContextHolder.getContext().getAuthentication());        //Prepare again, this time using the exception mapping        filter = new MockAbstractProcessingFilter(new AccountExpiredException("You're account is expired"));        filter.setAuthenticationFailureUrl("/failed.jsp");        Properties exceptionMappings = filter.getExceptionMappings();        exceptionMappings.setProperty(AccountExpiredException.class.getName(), "/accountExpired.jsp");        filter.setExceptionMappings(exceptionMappings);        response = new MockHttpServletResponse();        // Test        executeFilterInContainerSimulator(config, filter, request, response, chain);        assertEquals("/mycontext/accountExpired.jsp", response.getRedirectedUrl());        assertNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(8*1024, response.getBufferSize());    }    public void testFilterProcessesUrlVariationsRespected()        throws Exception {        // Setup our HTTP request        MockHttpServletRequest request = createMockRequest();        request.setServletPath("/j_OTHER_LOCATION");        request.setRequestURI("/mycontext/j_OTHER_LOCATION");        // Setup our filter configuration        MockFilterConfig config = new MockFilterConfig(null, null);        // Setup our expectation that the filter chain will not be invoked, as we redirect to defaultTargetUrl        MockFilterChain chain = new MockFilterChain(false);        MockHttpServletResponse response = new MockHttpServletResponse();        // Setup our test object, to grant access        MockAbstractProcessingFilter filter = new MockAbstractProcessingFilter(true);        filter.setFilterProcessesUrl("/j_OTHER_LOCATION");        filter.setDefaultTargetUrl("/logged_in.jsp");        // Test        executeFilterInContainerSimulator(config, filter, request, response, chain);        assertEquals("/mycontext/logged_in.jsp", response.getRedirectedUrl());        assertNotNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals("test", SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString());        assertEquals(8*1024, response.getBufferSize());    }    public void testGettersSetters() {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        assertNotNull(filter.getRememberMeServices());        filter.setRememberMeServices(new TokenBasedRememberMeServices());        assertEquals(TokenBasedRememberMeServices.class, filter.getRememberMeServices().getClass());        filter.setAuthenticationFailureUrl("/x");        assertEquals("/x", filter.getAuthenticationFailureUrl());        filter.setAuthenticationManager(new MockAuthenticationManager());        assertTrue(filter.getAuthenticationManager() != null);        filter.setDefaultTargetUrl("/default");        assertEquals("/default", filter.getDefaultTargetUrl());        filter.setFilterProcessesUrl("/p");        assertEquals("/p", filter.getFilterProcessesUrl());        filter.setAuthenticationFailureUrl("/fail");        assertEquals("/fail", filter.getAuthenticationFailureUrl());    }    public void testDefaultUrlMuststartWithSlashOrHttpScheme() {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        filter.setDefaultTargetUrl("/acceptableRelativeUrl");        filter.setDefaultTargetUrl("http://some.site.org/index.html");        filter.setDefaultTargetUrl("https://some.site.org/index.html");        try {            filter.setDefaultTargetUrl("missingSlash");            fail("Shouldn't accept default target without leading slash");        } catch (IllegalArgumentException expected) {}    }    public void testIgnoresAnyServletPathOtherThanFilterProcessesUrl()        throws Exception {        // Setup our HTTP request        MockHttpServletRequest request = createMockRequest();        request.setServletPath("/some.file.html");        request.setRequestURI("/mycontext/some.file.html");        // Setup our filter configuration        MockFilterConfig config = new MockFilterConfig(null, null);        // Setup our expectation that the filter chain will be invoked, as our request is for a page the filter isn't monitoring        MockFilterChain chain = new MockFilterChain(true);        MockHttpServletResponse response = new MockHttpServletResponse();        // Setup our test object, to deny access        MockAbstractProcessingFilter filter = new MockAbstractProcessingFilter(false);        // Test        executeFilterInContainerSimulator(config, filter, request, response, chain);    }

⌨️ 快捷键说明

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