craigmcc 01/12/12 14:34:20
Modified: tester/src/bin tester.xml
tester/web/WEB-INF web.xml
Added: tester/src/tester/org/apache/tester Redirect01.java
Redirect01a.java
tester/web Redirect02.jsp Redirect02a.jsp Redirect03.jsp
Redirect03a.jsp
Log:
Add unit tests to demonstrate that response.sendRedirect() is handled
correctly, including ignoring any subsequent output, from either a servlet
or a JSP page.
Revision Changes Path
1.75 +20 -0 jakarta-tomcat-4.0/tester/src/bin/tester.xml
Index: tester.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/tester/src/bin/tester.xml,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -r1.74 -r1.75
--- tester.xml 2001/12/12 02:26:10 1.74
+++ tester.xml 2001/12/12 22:34:20 1.75
@@ -1464,6 +1464,26 @@
outHeaders="Content-Language:en-US"/>
+ <!-- ========== SendRedirect Handling ================================= -->
+
+ <tester host="${host}" port="${port}" protocol=""
+ request="${context.path}/Redirect01" debug="${debug}"
+ outContent="Redirect01a PASSED" redirect="true"/>
+
+ <tester host="${host}" port="${port}" protocol=""
+ request="${context.path}/WrappedRedirect01" debug="${debug}"
+ outContent="Redirect01a PASSED" redirect="true"/>
+
+ <!-- JSP page includes "return" after redirect -->
+ <tester host="${host}" port="${port}" protocol=""
+ request="${context.path}/Redirect02.jsp" debug="${debug}"
+ outContent="Redirect02a.jsp PASSED" redirect="true"/>
+
+ <!-- Same as "Redirect02.jsp" except without the "return" -->
+ <tester host="${host}" port="${port}" protocol=""
+ request="${context.path}/Redirect03.jsp" debug="${debug}"
+ outContent="Redirect03a.jsp PASSED" redirect="true"/>
+
</target>
1.1
jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Redirect01.java
Index: Redirect01.java
===================================================================
/* ========================================================================= *
* *
* The Apache Software License, Version 1.1 *
* *
* Copyright (c) 1999, 2000, 2001 The Apache Software Foundation. *
* All rights reserved. *
* *
* ========================================================================= *
* *
* Redistribution and use in source and binary forms, with or without modi- *
* fication, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice *
* notice, this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. The end-user documentation included with the redistribution, if any, *
* must include the following acknowlegement: *
* *
* "This product includes software developed by the Apache Software *
* Foundation <http://www.apache.org/>." *
* *
* Alternately, this acknowlegement may appear in the software itself, if *
* and wherever such third-party acknowlegements normally appear. *
* *
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
* Foundation" must not be used to endorse or promote products derived *
* from this software without prior written permission. For written *
* permission, please contact <[EMAIL PROTECTED]>. *
* *
* 5. Products derived from this software may not be called "Apache" nor may *
* "Apache" appear in their names without prior written permission of the *
* Apache Software Foundation. *
* *
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
* THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
* POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= *
* *
* This software consists of voluntary contributions made by many indivi- *
* duals on behalf of the Apache Software Foundation. For more information *
* on the Apache Software Foundation, please see <http://www.apache.org/>. *
* *
* ========================================================================= */
package org.apache.tester;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Positive test for HttpServletResponse.sendRedirect().
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2001/12/12 22:34:20 $
*/
public class Redirect01 extends HttpServlet {
// --------------------------------------------------------- Public Methods
/**
* Process a servlet request and create the corresponding response.
*
* @param request The request we are processing
* @param response The response we are creating
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/plain");
PrintWriter writer = response.getWriter();
try {
response.sendRedirect(request.getContextPath() + "/Redirect01a");
return;
} catch (IllegalStateException e) {
writer.println("Redirect01 FAILED - Threw IllegaStateException");
e.printStackTrace(writer);
}
try {
writer.println("Redirect01 FAILED - Output text after redirect");
} catch (Throwable t) {
throw new ServletException("Redirect01 Post-Redirect Output Error",
t);
}
while (true) {
String message = StaticLogger.read();
if (message == null)
break;
writer.println(message);
}
StaticLogger.reset();
}
}
1.1
jakarta-tomcat-4.0/tester/src/tester/org/apache/tester/Redirect01a.java
Index: Redirect01a.java
===================================================================
/* ========================================================================= *
* *
* The Apache Software License, Version 1.1 *
* *
* Copyright (c) 1999, 2000, 2001 The Apache Software Foundation. *
* All rights reserved. *
* *
* ========================================================================= *
* *
* Redistribution and use in source and binary forms, with or without modi- *
* fication, are permitted provided that the following conditions are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice *
* notice, this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. The end-user documentation included with the redistribution, if any, *
* must include the following acknowlegement: *
* *
* "This product includes software developed by the Apache Software *
* Foundation <http://www.apache.org/>." *
* *
* Alternately, this acknowlegement may appear in the software itself, if *
* and wherever such third-party acknowlegements normally appear. *
* *
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *
* Foundation" must not be used to endorse or promote products derived *
* from this software without prior written permission. For written *
* permission, please contact <[EMAIL PROTECTED]>. *
* *
* 5. Products derived from this software may not be called "Apache" nor may *
* "Apache" appear in their names without prior written permission of the *
* Apache Software Foundation. *
* *
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES *
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY *
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL *
* THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY *
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS *
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) *
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, *
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN *
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
* POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= *
* *
* This software consists of voluntary contributions made by many indivi- *
* duals on behalf of the Apache Software Foundation. For more information *
* on the Apache Software Foundation, please see <http://www.apache.org/>. *
* *
* ========================================================================= */
package org.apache.tester;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Positive test for HttpServletResponse.sendRedirect().
*
* @author Craig R. McClanahan
* @version $Revision: 1.1 $ $Date: 2001/12/12 22:34:20 $
*/
public class Redirect01a extends HttpServlet {
// --------------------------------------------------------- Public Methods
/**
* Process a servlet request and create the corresponding response.
*
* @param request The request we are processing
* @param response The response we are creating
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/plain");
PrintWriter writer = response.getWriter();
writer.println("Redirect01a PASSED");
while (true) {
String message = StaticLogger.read();
if (message == null)
break;
writer.println(message);
}
StaticLogger.reset();
}
}
1.1 jakarta-tomcat-4.0/tester/web/Redirect02.jsp
Index: Redirect02.jsp
===================================================================
<%@ page contentType="text/plain" %><% String dummy = null; if (dummy == null) {
response.sendRedirect(request.getContextPath() + "/Redirect02a.jsp"); return; }
%>Redirect02.jsp FAILED - Content should not be visible
1.1 jakarta-tomcat-4.0/tester/web/Redirect02a.jsp
Index: Redirect02a.jsp
===================================================================
<%@ page contentType="text/plain" %>Redirect02a.jsp PASSED
1.1 jakarta-tomcat-4.0/tester/web/Redirect03.jsp
Index: Redirect03.jsp
===================================================================
<%@ page contentType="text/plain" %><% String dummy = null; if (dummy == null) {
response.sendRedirect(request.getContextPath() + "/Redirect03a.jsp"); }
%>Redirect03.jsp FAILED - Content should not be visible
1.1 jakarta-tomcat-4.0/tester/web/Redirect03a.jsp
Index: Redirect03a.jsp
===================================================================
<%@ page contentType="text/plain" %>Redirect03a.jsp PASSED
1.55 +35 -0 jakarta-tomcat-4.0/tester/web/WEB-INF/web.xml
Index: web.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/tester/web/WEB-INF/web.xml,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- web.xml 2001/11/12 21:37:28 1.54
+++ web.xml 2001/12/12 22:34:20 1.55
@@ -335,6 +335,11 @@
<filter-mapping>
<filter-name>HttpFilter</filter-name>
+ <url-pattern>/WrappedRedirect01</url-pattern>
+ </filter-mapping>
+
+ <filter-mapping>
+ <filter-name>HttpFilter</filter-name>
<url-pattern>/WrappedReflection01</url-pattern>
</filter-mapping>
@@ -887,6 +892,16 @@
</servlet>
<servlet>
+ <servlet-name>Redirect01</servlet-name>
+ <servlet-class>org.apache.tester.Redirect01</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>Redirect01a</servlet-name>
+ <servlet-class>org.apache.tester.Redirect01a</servlet-class>
+ </servlet>
+
+ <servlet>
<servlet-name>Reflection01</servlet-name>
<servlet-class>org.apache.tester.Reflection01</servlet-class>
</servlet>
@@ -1646,6 +1661,26 @@
<servlet-mapping>
<servlet-name>Lifecycle03</servlet-name>
<url-pattern>/WrappedLifecycle03</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Redirect01</servlet-name>
+ <url-pattern>/Redirect01</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Redirect01</servlet-name>
+ <url-pattern>/WrappedRedirect01</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Redirect01a</servlet-name>
+ <url-pattern>/Redirect01a</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Redirect01a</servlet-name>
+ <url-pattern>/WrappedRedirect01a</url-pattern>
</servlet-mapping>
<servlet-mapping>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>