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

📄 abstractprocessingfiltertests.java

📁 acegi构造安全的java系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    public void testNormalOperationWithDefaultFilterProcessesUrl()        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 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_mock_post");        filter.setDefaultTargetUrl("/logged_in.jsp");        filter.setAuthenticationFailureUrl("/failure.jsp");        filter.setAuthenticationManager(new MockAuthenticationManager(true));        filter.afterPropertiesSet();        // 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 testStartupDetectsInvalidAuthenticationFailureUrl()        throws Exception {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        filter.setAuthenticationManager(new MockAuthenticationManager());        filter.setDefaultTargetUrl("/");        filter.setFilterProcessesUrl("/j_acegi_security_check");        try {            filter.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("authenticationFailureUrl must be specified", expected.getMessage());        }    }    public void testStartupDetectsInvalidAuthenticationManager()        throws Exception {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        filter.setAuthenticationFailureUrl("/failed.jsp");        filter.setDefaultTargetUrl("/");        filter.setFilterProcessesUrl("/j_acegi_security_check");        try {            filter.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("authenticationManager must be specified", expected.getMessage());        }    }    public void testStartupDetectsInvalidDefaultTargetUrl()        throws Exception {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        filter.setAuthenticationFailureUrl("/failed.jsp");        filter.setAuthenticationManager(new MockAuthenticationManager());        filter.setFilterProcessesUrl("/j_acegi_security_check");        try {            filter.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("defaultTargetUrl must be specified", expected.getMessage());        }    }    public void testStartupDetectsInvalidFilterProcessesUrl()        throws Exception {        AbstractProcessingFilter filter = new MockAbstractProcessingFilter();        filter.setAuthenticationFailureUrl("/failed.jsp");        filter.setAuthenticationManager(new MockAuthenticationManager());        filter.setDefaultTargetUrl("/");        filter.setFilterProcessesUrl(null);        try {            filter.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("filterProcessesUrl must be specified", expected.getMessage());        }    }    public void testSuccessLoginThenFailureLoginResultsInSessionLosingToken()        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 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_mock_post");        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());        // Now try again but this time have filter deny access        // Setup our HTTP request        // Setup our expectation that the filter chain will not be invoked, as we redirect to authenticationFailureUrl        chain = new MockFilterChain(false);        response = new MockHttpServletResponse();        // Setup our test object, to deny access        filter = new MockAbstractProcessingFilter(false);        filter.setFilterProcessesUrl("/j_mock_post");        filter.setAuthenticationFailureUrl("/failed.jsp");        // Test        executeFilterInContainerSimulator(config, filter, request, response, chain);        assertNull(SecurityContextHolder.getContext().getAuthentication());    }    public void testSuccessfulAuthenticationButWithAlwaysUseDefaultTargetUrlCausesRedirectToDefaultTargetUrl()        throws Exception {        // Setup our HTTP request        MockHttpServletRequest request = createMockRequest();        request.getSession().setAttribute(AbstractProcessingFilter.ACEGI_SAVED_REQUEST_KEY, makeSavedRequestForUrl());        // Setup our filter configuration        MockFilterConfig config = new MockFilterConfig(null, null);        // Setup our expectation that the filter chain will be invoked, as we want to go to the location requested in the session        MockFilterChain chain = new MockFilterChain(true);        MockHttpServletResponse response = new MockHttpServletResponse();        // Setup our test object, to grant access        MockAbstractProcessingFilter filter = new MockAbstractProcessingFilter(true);        filter.setFilterProcessesUrl("/j_mock_post");        filter.setDefaultTargetUrl("/foobar");        assertFalse(filter.isAlwaysUseDefaultTargetUrl()); // check default        filter.setAlwaysUseDefaultTargetUrl(true);        assertTrue(filter.isAlwaysUseDefaultTargetUrl()); // check changed        // Test        executeFilterInContainerSimulator(config, filter, request, response, chain);        assertEquals("/mycontext/foobar", response.getRedirectedUrl());        assertNotNull(SecurityContextHolder.getContext().getAuthentication());    }    public void testSuccessfulAuthenticationCausesRedirectToSessionSpecifiedUrl()        throws Exception {        // Setup our HTTP request        MockHttpServletRequest request = createMockRequest();        request.getSession().setAttribute(AbstractProcessingFilter.ACEGI_SAVED_REQUEST_KEY, makeSavedRequestForUrl());        // Setup our filter configuration        MockFilterConfig config = new MockFilterConfig(null, null);        // Setup our expectation that the filter chain will be invoked, as we want to go to the location requested in the session        MockFilterChain chain = new MockFilterChain(true);        MockHttpServletResponse response = new MockHttpServletResponse();        // Setup our test object, to grant access        MockAbstractProcessingFilter filter = new MockAbstractProcessingFilter(true);        filter.setFilterProcessesUrl("/j_mock_post");        // Test        executeFilterInContainerSimulator(config, filter, request, response, chain);        assertEquals(makeSavedRequestForUrl().getFullRequestUrl(), response.getRedirectedUrl());        assertNotNull(SecurityContextHolder.getContext().getAuthentication());        assertEquals(8*1024, response.getBufferSize());    }    /**     * SEC-297 fix.      */    public void testFullDefaultTargetUrlDoesNotHaveContextPathPrepended() throws Exception {        MockHttpServletRequest request = createMockRequest();        MockFilterConfig config = new MockFilterConfig(null, null);        MockFilterChain chain = new MockFilterChain(true);        MockHttpServletResponse response = new MockHttpServletResponse();        // Setup our test object, to grant access        MockAbstractProcessingFilter filter = new MockAbstractProcessingFilter(true);        filter.setFilterProcessesUrl("/j_mock_post");        filter.setDefaultTargetUrl("http://monkeymachine.co.uk/");        filter.setAlwaysUseDefaultTargetUrl(true);        executeFilterInContainerSimulator(config, filter, request, response, chain);        assertEquals("http://monkeymachine.co.uk/", response.getRedirectedUrl());        assertNotNull(SecurityContextHolder.getContext().getAuthentication());    }    //~ Inner Classes ==================================================================================================    private class MockAbstractProcessingFilter extends AbstractProcessingFilter {        private AuthenticationException exceptionToThrow;        private boolean grantAccess;        public MockAbstractProcessingFilter(boolean grantAccess) {            this.grantAccess = grantAccess;            this.exceptionToThrow = new BadCredentialsException("Mock requested to do so");        }        public MockAbstractProcessingFilter(AuthenticationException exceptionToThrow) {            this.grantAccess = false;            this.exceptionToThrow = exceptionToThrow;        }        private MockAbstractProcessingFilter() {            super();        }        public Authentication attemptAuthentication(HttpServletRequest request)            throws AuthenticationException {            if (grantAccess) {                return new UsernamePasswordAuthenticationToken("test", "test",                    new GrantedAuthority[] {new GrantedAuthorityImpl("TEST")});            } else {                throw exceptionToThrow;            }        }        public String getDefaultFilterProcessesUrl() {            return "/j_mock_post";        }        public void init(FilterConfig arg0) throws ServletException {}        public boolean requiresAuthentication(HttpServletRequest request, HttpServletResponse response) {            return super.requiresAuthentication(request, response);        }    }    private class MockFilterChain implements FilterChain {        private boolean expectToProceed;        public MockFilterChain(boolean expectToProceed) {            this.expectToProceed = expectToProceed;        }        private MockFilterChain() {            super();        }        public void doFilter(ServletRequest request, ServletResponse response)            throws IOException, ServletException {            if (expectToProceed) {                assertTrue(true);            } else {                fail("Did not expect filter chain to proceed");            }        }    }}

⌨️ 快捷键说明

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