[Httpunit-commit] CVS: httpunit/test/com/meterware/servletunit HttpServletResponseTest.java,1.3,1.4
Brought to you by:
russgold
From: Russell G. <rus...@us...> - 2002-08-22 15:48:50
|
Update of /cvsroot/httpunit/httpunit/test/com/meterware/servletunit In directory usw-pr-cvs1:/tmp/cvs-serv7190/test/com/meterware/servletunit Modified Files: HttpServletResponseTest.java StatefulTest.java StatelessTest.java Log Message: from Michael Reardon: Added support for ServletUnit headers and attribute names Index: HttpServletResponseTest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/test/com/meterware/servletunit/HttpServletResponseTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- HttpServletResponseTest.java 1 Aug 2002 14:58:59 -0000 1.3 +++ HttpServletResponseTest.java 22 Aug 2002 15:48:41 -0000 1.4 @@ -23,6 +23,8 @@ import java.util.Enumeration; import java.util.Vector; +import java.util.Date; +import java.text.SimpleDateFormat; import javax.servlet.*; import javax.servlet.http.*; @@ -126,6 +128,53 @@ } } + + public void testSingleHeaders() throws Exception { + ServletUnitHttpResponse servletResponse = new ServletUnitHttpResponse(); + servletResponse.setContentType( "text/html" ); + + servletResponse.setHeader( "foo", "bar" ); + String headerValue = servletResponse.getHeaderField( "foo" ); + assertEquals( "header is wrong", "bar", headerValue ); + + servletResponse.setHeader( "foo", "baz" ); + headerValue = servletResponse.getHeaderField( "foo" ); + assertEquals( "header is wrong", "baz", headerValue ); + + servletResponse.setIntHeader( "three", 3 ); + headerValue = servletResponse.getHeaderField( "three" ); + assertEquals( "int header is wrong", "3", headerValue ); + + SimpleDateFormat df = new SimpleDateFormat( "MM/dd/yyyy z" ); + Date d = df.parse( "12/9/1969 GMT" ); + servletResponse.setDateHeader( "date", d.getTime() ); + headerValue = servletResponse.getHeaderField( "date" ); + assertEquals( "date header is wrong", "Tue, 09 Dec 1969 12:00:00 GMT", headerValue ); + } + + + public void testMultipleHeaders() throws Exception { + ServletUnitHttpResponse servletResponse = new ServletUnitHttpResponse(); + servletResponse.setContentType( "text/html" ); + + SimpleDateFormat df = new SimpleDateFormat( "MM/dd/yyyy z" ); + Date date = df.parse( "12/9/1969 GMT" ); + + servletResponse.addHeader( "list", "over-rideme" ); + servletResponse.setHeader( "list", "foo" ); + servletResponse.addIntHeader( "list", 3 ); + servletResponse.addDateHeader( "list", date.getTime() ); + String[] headerList = servletResponse.getHeaderFields( "list" ); + assertEquals( "header is wrong", "foo", headerList[ 0 ] ); + assertEquals( "header is wrong", "3", headerList[ 1 ] ); + assertEquals( "header is wrong", "Tue, 09 Dec 1969 12:00:00 GMT", headerList[ 2 ] ); + + servletResponse.setHeader( "list", "monkeyboy" ); + headerList = servletResponse.getHeaderFields( "list" ); + assertEquals( "setHeader did not replace the list header", headerList.length, 1 ); + assertEquals( "header is wrong", "monkeyboy", headerList[ 0 ] ); + + } } Index: StatefulTest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/test/com/meterware/servletunit/StatefulTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- StatefulTest.java 18 Jun 2001 20:21:30 -0000 1.2 +++ StatefulTest.java 22 Aug 2002 15:48:41 -0000 1.3 @@ -21,6 +21,8 @@ *******************************************************************************************************************/ import java.io.*; import java.net.HttpURLConnection; +import java.util.Enumeration; + import javax.servlet.ServletException; import javax.servlet.http.*; @@ -118,6 +120,12 @@ ss.setColor( ic.getRequest(), "blue" ); assertEquals( "Color in session", "blue", ss.getColor( ic.getRequest() ) ); + + Enumeration e = ic.getRequest().getSession().getAttributeNames(); + assertNotNull( "No attribute list returned", e ); + assertTrue( "No attribute names in list", e.hasMoreElements() ); + assertEquals( "First attribute name", "color", e.nextElement() ); + assertTrue( "List did not end after one name", !e.hasMoreElements() ); } @@ -199,6 +207,7 @@ protected String getColor( HttpServletRequest req ) throws ServletException { HttpSession session = req.getSession( /* create */ false ); if (session == null) return null; + return (String) session.getAttribute( "color" ); } Index: StatelessTest.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/test/com/meterware/servletunit/StatelessTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- StatelessTest.java 21 May 2002 20:43:31 -0000 1.7 +++ StatelessTest.java 22 Aug 2002 15:48:41 -0000 1.8 @@ -1,46 +1,55 @@ package com.meterware.servletunit; /******************************************************************************************************************** -* $Id$ -* -* Copyright (c) 2000-2001, 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 java.io.*; + * $Id$ + * + * Copyright (c) 2000-2002, 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 com.meterware.httpunit.GetMethodWebRequest; +import com.meterware.httpunit.HttpNotFoundException; +import com.meterware.httpunit.PostMethodWebRequest; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; import java.net.HttpURLConnection; + import javax.servlet.ServletException; -import javax.servlet.http.*; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; -import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; -import com.meterware.httpunit.*; /** * Tests support for stateless HttpServlets. **/ public class StatelessTest extends TestCase { - public static void main(String args[]) { + public static void main( String args[] ) { junit.textui.TestRunner.run( suite() ); } - public static Test suite() { + public static TestSuite suite() { return new TestSuite( StatelessTest.class ); } @@ -53,7 +62,7 @@ public void testNotFound() throws Exception { ServletRunner sr = new ServletRunner(); - WebRequest request = new GetMethodWebRequest( "http://localhost/nothing" ); + WebRequest request = new GetMethodWebRequest( "http://localhost/nothing" ); try { sr.getResponse( request ); fail( "Should have rejected the request" ); @@ -69,7 +78,7 @@ ServletRunner sr = new ServletRunner(); sr.registerServlet( resourceName, AccessCountServlet.class.getName() ); - WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName ); + WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName ); assertEquals( "First reply", "1", sr.getResponse( request ).getText().trim() ); assertEquals( "Second reply", "2", sr.getResponse( request ).getText().trim() ); } @@ -78,7 +87,7 @@ public void testServletAccessByClassName() throws Exception { ServletRunner sr = new ServletRunner(); - WebRequest request = new GetMethodWebRequest( "http://localhost/servlet/" + SimpleGetServlet.class.getName() ); + WebRequest request = new GetMethodWebRequest( "http://localhost/servlet/" + SimpleGetServlet.class.getName() ); WebResponse response = sr.getResponse( request ); assertNotNull( "No response received", response ); assertEquals( "content type", "text/html", response.getContentType() ); @@ -92,7 +101,7 @@ ServletRunner sr = new ServletRunner(); sr.registerServlet( resourceName, SimpleGetServlet.class.getName() ); - WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName ); + WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName ); WebResponse response = sr.getResponse( request ); assertNotNull( "No response received", response ); assertEquals( "content type", "text/html", response.getContentType() ); @@ -106,12 +115,16 @@ ServletRunner sr = new ServletRunner(); sr.registerServlet( resourceName, ParameterServlet.class.getName() ); - WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName ); + WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName ); request.setParameter( "color", "red" ); WebResponse response = sr.getResponse( request ); assertNotNull( "No response received", response ); assertEquals( "content type", "text/plain", response.getContentType() ); assertEquals( "requested resource", "You selected red", response.getText() ); + String[] headers = response.getHeaderFields( "MyHeader" ); + assertEquals( "Number of MyHeaders returned", 2, headers.length ); + assertEquals( "MyHeader #1", "value1", headers[ 0 ] ); + assertEquals( "MyHeader #2", "value2", headers[ 1 ] ); } @@ -121,13 +134,14 @@ ServletRunner sr = new ServletRunner(); sr.registerServlet( resourceName, ParameterServlet.class.getName() ); - WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName + "?color=dark+red" ); + WebRequest request = new GetMethodWebRequest( "http://localhost/" + resourceName + "?color=dark+red" ); WebResponse response = sr.getResponse( request ); assertNotNull( "No response received", response ); assertEquals( "content type", "text/plain", response.getContentType() ); assertEquals( "requested resource", "You selected dark red", response.getText() ); } + public void testHeaderRetrieval() throws Exception { ServletRunner sr = new ServletRunner(); sr.registerServlet( "/Parameters", ParameterServlet.class.getName() ); @@ -135,12 +149,12 @@ ServletUnitClient client = sr.newClient(); client.setHeaderField( "Sample", "Value" ); client.setHeaderField( "Request", "Client" ); - WebRequest request = new GetMethodWebRequest( "http://localhost/Parameters?color=dark+red" ); + WebRequest request = new GetMethodWebRequest( "http://localhost/Parameters?color=dark+red" ); request.setHeaderField( "request", "Caller" ); InvocationContext ic = client.newInvocation( request ); assertEquals( "Sample header", "Value", ic.getRequest().getHeader( "sample" ) ); assertEquals( "Request header", "Caller", ic.getRequest().getHeader( "Request" ) ); - } + } public void testSimplePost() throws Exception { @@ -149,7 +163,7 @@ ServletRunner sr = new ServletRunner(); sr.registerServlet( resourceName, ParameterServlet.class.getName() ); - WebRequest request = new PostMethodWebRequest( "http://localhost/" + resourceName ); + WebRequest request = new PostMethodWebRequest( "http://localhost/" + resourceName ); request.setParameter( "color", "red" ); WebResponse response = sr.getResponse( request ); assertNotNull( "No response received", response ); @@ -172,11 +186,12 @@ } - static class SimpleGetServlet extends HttpServlet { + static String RESPONSE_TEXT = "the desired content\r\n"; - protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException,IOException { + + protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/html" ); PrintWriter pw = resp.getWriter(); pw.print( RESPONSE_TEXT ); @@ -186,9 +201,11 @@ static class AccessCountServlet extends HttpServlet { + private int _numAccesses; - protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException,IOException { + + protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/plain" ); PrintWriter pw = resp.getWriter(); pw.print( String.valueOf( ++_numAccesses ) ); @@ -198,16 +215,22 @@ static class ParameterServlet extends HttpServlet { + static String RESPONSE_TEXT = "the desired content\r\n"; - protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException,IOException { + + protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/plain" ); + resp.addHeader( "MyHeader", "value1" ); + resp.addHeader( "MyHeader", "value2" ); + PrintWriter pw = resp.getWriter(); pw.print( "You selected " + req.getParameter( "color" ) ); pw.close(); } - protected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException,IOException { + + protected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/plain" ); PrintWriter pw = resp.getWriter(); pw.print( "You posted " + req.getParameter( "color" ) ); |