You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/02/07 07:49:39 UTC
cvs commit: jakarta-tomcat/src/tests/webpages/WEB-INF/classes/params RDInclude.java ServletUtil.java InputStreamParams.java Params.java ParamsInputStream.java
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");
}
}