costin 01/02/06 22:49:38 Modified: src/tests/webpages/WEB-INF test-tomcat.xml src/tests/webpages/WEB-INF/classes/params InputStreamParams.java Params.java ParamsInputStream.java Added: src/tests/webpages/WEB-INF/classes/params RDInclude.java ServletUtil.java Log: More work on testing the parameter handling. The final tests will cover: - POST + GET and the way the params are merged - The Body is read on getParameter ( and not before ) - RequestDispatchers and the way params are merged and restored. - RequestDispatchers and the rule that the Body is read on the first getParameter ( this will probably fail with Tomcat3.2 ) - Same tests for JSPs ( the tests for reading the Body will probably fail on 3.2 and if 3.3 is using JspServlet - since JspServlet does a getParameter that will automatically read the body ) - the special case of jsp_compile ( the spec mentions that ?jsp_compile can be used - which is a special form of parameter, since it has no =) - also make sure that jsp_compile doesn't execute the jsp So far the tests found few bugs in reading input, I'll commit the fix tommorow. Revision Changes Path 1.14 +78 -17 jakarta-tomcat/src/tests/webpages/WEB-INF/test-tomcat.xml Index: test-tomcat.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/tests/webpages/WEB-INF/test-tomcat.xml,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- test-tomcat.xml 2001/01/31 02:05:54 1.13 +++ test-tomcat.xml 2001/02/07 06:49:29 1.14 @@ -16,7 +16,7 @@ early tests. --> - <property name="revision" value="$Revision: 1.13 $" /> + <property name="revision" value="$Revision: 1.14 $" /> <property name="host" value="127.0.0.1" /> <property name="port" value="8080" /> <property name="outputType" value="text" /> @@ -90,6 +90,82 @@ </target> + <!-- ==================== Parameters tests ==================== --> + + <target name="params" depends="init"> + <gtest> + <comment>Simple GET with parmeters</comment> + <httpClient path="/test/servlet/params.Params?a=k&c=l&a=m" /> + <defaultMatcher returnCode="200" /> + <defaultMatcher responseMatch="a = [ k , m ]" /> + <defaultMatcher responseMatch="c = [ l ]"/> + </gtest> + + <gtest> + <comment>Simple POST parmeters</comment> + <httpClient path="/test/servlet/params.Params" + method="POST"> + <header name="Content-Type" + value="application/x-www-form-urlencoded" /> + <body>a=b&c=d</body> + </httpClient> + <defaultMatcher returnCode="200" /> + <defaultMatcher responseMatch="a = [ b ]"/> + <defaultMatcher responseMatch="c = [ d ]"/> + </gtest> + + <gtest> + <comment>POST and GET parameters</comment> + <httpClient path="/test/servlet/params.Params?a=x&m=n" + method="POST"> + <header name="Content-Type" + value="application/x-www-form-urlencoded" /> + <body>a=b&c=d</body> + </httpClient> + <defaultMatcher returnCode="200" /> + <defaultMatcher responseMatch="a = [ x , b ]"/> + <defaultMatcher responseMatch="m = [ n ]"/> + <defaultMatcher responseMatch="c = [ d ]"/> + </gtest> + + <gtest> + <comment>The POST data can't be read before getParameter</comment> + <httpClient + path="/test/servlet/params.InputStreamParams?a=x&m=n" + method="POST"> + <header name="Content-Type" + value="application/x-www-form-urlencoded" /> + <body>a=b&c=d</body> + </httpClient> + <defaultMatcher returnCode="200" /> + <defaultMatcher responseMatch="a = [ x ]" /> + <defaultMatcher responseMatch="m = [ n ]"/> + <defaultMatcher responseMatch="c = [ d ]"/> + </gtest> + + + </target> + + <!-- ==================== Init params tests ==================== --> + + <target name="init-params" depends="init"> + <gtest request="GET /test/servlet/servletParam1 HTTP/1.0" + returnCode="${http.protocol} 200" + goldenFile="${gdir}/servletParam1.txt" + /> + + <gtest request="GET /test/servlet/servletParam2 HTTP/1.0" + returnCode="${http.protocol} 200" + goldenFile="${gdir}/servletParam2.txt" + /> + + <gtest request="GET /test/servlet/ServletParam HTTP/1.0" + returnCode="${http.protocol} 200" + goldenFile="${gdir}/ServletParam.txt" + /> + </target> + + <!-- ==================== Dispatch tests ==================== --> <target name="dispatch" depends="init"> <gtest description="SimpleInclude" @@ -455,21 +531,6 @@ returnCode="${http.protocol} 200" /> - <gtest request="GET /test/servlet/servletParam1 HTTP/1.0" - returnCode="${http.protocol} 200" - goldenFile="${gdir}/servletParam1.txt" - /> - - <gtest request="GET /test/servlet/servletParam2 HTTP/1.0" - returnCode="${http.protocol} 200" - goldenFile="${gdir}/servletParam2.txt" - /> - - <gtest request="GET /test/servlet/ServletParam HTTP/1.0" - returnCode="${http.protocol} 200" - goldenFile="${gdir}/ServletParam.txt" - /> - <gtest request="GET /test/jsp/bigDeclaration.jsp HTTP/1.0" returnCode="${http.protocol} 200" /> @@ -537,7 +598,7 @@ <!-- ==================== Get tests ==================== --> - <target name="get" depends="init"> + <target name="get" depends="init,init-params"> <gtest description="First call to unavailable will fail, wait 10 sec" request="GET /test/servlet/Unavailable HTTP/1.0" 1.2 +4 -27 jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/InputStreamParams.java Index: InputStreamParams.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/InputStreamParams.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- InputStreamParams.java 2001/02/06 06:53:32 1.1 +++ InputStreamParams.java 2001/02/07 06:49:33 1.2 @@ -1,4 +1,4 @@ -package request; +package params; import java.io.*; import java.text.*; @@ -18,33 +18,10 @@ response.setContentType("text/plain"); PrintWriter out = response.getWriter(); - InputStream in=request.getInputStream(); + ServletUtil.printBody( request, out ); + out.flush(); - out.println("START BODY: " ); - int c; - while( (c=in.read()) >= 0 ) { - out.write( (char)c ); - } - out.println(); - out.println("END BODY"); - - // Now get parameters - only query should be available :-) - Enumeration paramN=request.getParameterNames(); - - while( paramN.hasMoreElements() ) { - String name=(String)paramN.nextElement(); - String all[]=request.getParameterValues(name); - - out.print(name); - out.print(" = [ " ); - for( int i=0; i<all.length; i++ ) { - if( i>0 ) out.print( " , "); - out.print( all[i] ); - } - out.println( " ]"); - - } - out.println(request.getQueryString()); + ServletUtil.printParams( request, out ); } } 1.2 +2 -18 jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/Params.java Index: Params.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/Params.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Params.java 2001/02/06 06:53:32 1.1 +++ Params.java 2001/02/07 06:49:33 1.2 @@ -1,4 +1,4 @@ -package request; +package params; import java.io.*; import java.text.*; @@ -18,23 +18,7 @@ response.setContentType("text/plain"); PrintWriter out = response.getWriter(); - out.println("Request parameters: " ); - Enumeration paramN=request.getParameterNames(); - - while( paramN.hasMoreElements() ) { - String name=(String)paramN.nextElement(); - String all[]=request.getParameterValues(name); - - out.print(name); - out.print(" = [ " ); - for( int i=0; i<all.length; i++ ) { - if( i>0 ) out.print( " , "); - out.print( all[i] ); - } - out.println( " ]"); - - } - out.println(request.getQueryString()); + ServletUtil.printParams( request, out ); } } 1.2 +4 -28 jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/ParamsInputStream.java Index: ParamsInputStream.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/ParamsInputStream.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ParamsInputStream.java 2001/02/06 06:53:32 1.1 +++ ParamsInputStream.java 2001/02/07 06:49:34 1.2 @@ -1,4 +1,4 @@ -package request; +package params; import java.io.*; import java.text.*; @@ -17,35 +17,11 @@ { PrintWriter out = response.getWriter(); response.setContentType("text/plain"); - Enumeration paramN=request.getParameterNames(); - while( paramN.hasMoreElements() ) { - String name=(String)paramN.nextElement(); - String all[]=request.getParameterValues(name); + ServletUtil.printParams( request, out ); + out.flush(); - out.print(name); - out.print(" = [ " ); - for( int i=0; i<all.length; i++ ) { - if( i>0 ) out.print( " , "); - out.print( all[i] ); - } - out.println( " ]"); - - } - - out.println("QueryString= " + request.getQueryString()); - - - InputStream in=request.getInputStream(); - - out.println("START BODY: " ); - int c; - while( (c=in.read()) >= 0 ) { - out.write( (char)c ); - } - out.println(); - out.println("END BODY"); - + ServletUtil.printBody( request, out ); } } 1.1 jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/RDInclude.java Index: RDInclude.java =================================================================== package params; import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; /** * */ public class RDInclude extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/plain"); PrintWriter out = response.getWriter(); out.println("RequestDispatcher view: "); ServletUtil.printParams( request, out ); String uri="Params?a=b"; out.println("Calling RD.include for: " + uri); RequestDispatcher rd=request.getRequestDispatcher(uri); rd.include( request, response ); out.println("After include "); ServletUtil.printParams( request, out ); uri="Params?a=c&d=e"; out.println("Calling RD.include for: " + uri); rd=request.getRequestDispatcher(uri); rd.include( request, response ); out.println("After include "); ServletUtil.printParams( request, out ); } } 1.1 jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params/ServletUtil.java Index: ServletUtil.java =================================================================== package params; import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; /** * */ public class ServletUtil { public static void printParams( HttpServletRequest request, PrintWriter out ) throws IOException, ServletException { Enumeration paramN=request.getParameterNames(); out.print( "Params = ["); while( paramN.hasMoreElements() ) { String name=(String)paramN.nextElement(); String all[]=request.getParameterValues(name); out.print(name); if( paramN.hasMoreElements()) out.print(" , "); } out.println( " ]"); paramN=request.getParameterNames(); while( paramN.hasMoreElements() ) { String name=(String)paramN.nextElement(); String all[]=request.getParameterValues(name); out.print(name); out.print(" = [ " ); for( int i=0; i<all.length; i++ ) { if( i>0 ) out.print( " , "); out.print( all[i] ); } out.println( " ]"); } out.println("Query = " + request.getQueryString()); } public static void printBody( HttpServletRequest request, PrintWriter out ) throws IOException, ServletException { InputStream in=request.getInputStream(); out.println("START BODY: " ); int c; while( (c=in.read()) >= 0 ) { out.write( (char)c ); } out.println(); out.println("END BODY"); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]