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

📄 filterstest.java

📁 这是远程web服务调用的一个包,可以将JSP直接作为服务
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.meterware.servletunit;/******************************************************************************************************************** * $Id: FiltersTest.java,v 1.1 2004/02/26 17:36:47 russgold Exp $ * * Copyright (c) 2004, Russell Gold * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated * documentation files (the "Software"), to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and * to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions * of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * *******************************************************************************************************************/import junit.framework.TestCase;import junit.framework.TestSuite;import javax.servlet.*;import javax.servlet.http.*;import java.io.IOException;import java.io.PrintWriter;import java.net.URL;import java.util.*;import com.meterware.httpunit.HttpUnitUtils;import com.meterware.httpunit.WebResponse;import org.xml.sax.InputSource;/** * Tests the servlet filtering capability added in Servlet 2.3. * * @author <a href="mailto:russgold@httpunit.org">Russell Gold</a> **/public class FiltersTest extends TestCase {    final static FilterMetaData FILTER1 = new FilterMetaDataImpl(1);    final static FilterMetaData FILTER2 = new FilterMetaDataImpl(2);    final static FilterMetaData FILTER3 = new FilterMetaDataImpl(3);    final static FilterMetaData FILTER4 = new FilterMetaDataImpl(4);    final static FilterMetaData FILTER5 = new FilterMetaDataImpl(5);    final static FilterMetaData FILTER6 = new FilterMetaDataImpl(6);    private static boolean _servletCalled;    public static void main(String args[]) {        junit.textui.TestRunner.run( suite() );    }    public static TestSuite suite() {        return new TestSuite( FiltersTest.class );    }    public FiltersTest( String name ) {        super( name );    }    /**     * Verifies that the no-filter case is handled by servlet metadata.     */    public void testNoFilterAssociation() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        WebApplication application = new WebApplication( HttpUnitUtils.newParser().parse( new InputSource( wxs.asInputStream() ) ), null );        ServletMetaData metaData = application.getServletRequest( new URL( "http://localhost/SimpleServlet" ) );        FilterMetaData[] filters = metaData.getFilters();        assertEquals( "number of associated filters", 0, filters.length );    }    /**     * Verifies that a simple filter is associated with a servlet by its name.     */    public void testNameFilterAssociation() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        wxs.addFilterForServlet( "Trivial", TrivialFilter.class, "Simple" );        WebApplication application = new WebApplication( HttpUnitUtils.newParser().parse( new InputSource( wxs.asInputStream() ) ), null );        ServletMetaData metaData = application.getServletRequest( new URL( "http://localhost/SimpleServlet" ) );        FilterMetaData[] filters = metaData.getFilters();        assertEquals( "number of associated filters", 1, filters.length );        assertEquals( "filter class", TrivialFilter.class, filters[0].getFilter().getClass() );    }    /**     * Verifies that a simple filter will be called before a servlet with the same URL.     */    public void testFilterByNameInvocation() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        wxs.addFilterForServlet( "Trivial", TrivialFilter.class, "Simple" );        ServletRunner sr = new ServletRunner( wxs.asInputStream() );        ServletUnitClient wc = sr.newClient();        InvocationContext ic = wc.newInvocation( "http://localhost/SimpleServlet" );        assertTrue( "Did not find a filter", ic.isFilterActive() );        Filter filter = ic.getFilter();        assertNotNull( "Filter is null", filter );        assertEquals( "Filter class", TrivialFilter.class, filter.getClass() );        ic.pushFilter( ic.getRequest(), ic.getResponse() );        assertFalse( "Did not switch to servlet", ic.isFilterActive() );        assertEquals( "Servlet class", SimpleGetServlet.class, ic.getServlet().getClass() );        ic.popRequest();        assertTrue( "Did not pop back to filter", ic.isFilterActive() );        assertSame( "Restored filter", filter, ic.getFilter() );    }    /**     * Verifies that a simple filter will be called before a servlet with the same URL.     */    public void testNamedFilterOrder() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        wxs.addFilterForServlet( "Trivial", TrivialFilter.class, "Simple" );        wxs.addFilterForServlet( "Attribute", AttributeFilter.class, "Simple" );        ServletRunner sr = new ServletRunner( wxs.asInputStream() );        ServletUnitClient wc = sr.newClient();        InvocationContext ic = wc.newInvocation( "http://localhost/SimpleServlet" );        Filter filter1 = ic.getFilter();        assertEquals( "Filter 1 class", TrivialFilter.class, filter1.getClass() );        ic.pushFilter( ic.getRequest(), ic.getResponse() );        assertTrue( "Did not find a filter", ic.isFilterActive() );        Filter filter2 = ic.getFilter();        assertEquals( "Filter 2 class", AttributeFilter.class, filter2.getClass() );        ic.pushFilter( ic.getRequest(), ic.getResponse() );        assertFalse( "Did not switch to servlet", ic.isFilterActive() );        assertEquals( "Servlet class", SimpleGetServlet.class, ic.getServlet().getClass() );        ic.popRequest();        assertSame( "Restored filter 2", filter2, ic.getFilter() );        ic.popRequest();        assertSame( "Restored filter 1", filter1, ic.getFilter() );    }    /**     * Verifies that request / response wrappering for filters is supported.     */    public void testFilterRequestWrapping() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        wxs.addFilterForServlet( "Trivial", TrivialFilter.class, "Simple" );        ServletRunner sr = new ServletRunner( wxs.asInputStream() );        ServletUnitClient wc = sr.newClient();        InvocationContext ic = wc.newInvocation( "http://localhost/SimpleServlet" );        HttpServletRequest originalRequest = ic.getRequest();        HttpServletResponse originalResponse = ic.getResponse();        HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper( originalResponse );        HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper( originalRequest );        ic.pushFilter( requestWrapper, responseWrapper );        assertFalse( "Did not switch to servlet", ic.isFilterActive() );        assertSame( "Servlet request", requestWrapper, ic.getRequest() );        assertSame( "Servlet response", responseWrapper, ic.getResponse() );        ic.popRequest();        assertSame( "Filter request", originalRequest, ic.getRequest() );        assertSame( "Filter response", originalResponse, ic.getResponse() );    }

⌨️ 快捷键说明

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