|
Jetty example source code file (ServletTest.java)
The Jetty ServletTest.java source codeimport java.io.IOException; import java.net.URL; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.mortbay.io.ByteArrayBuffer; import org.mortbay.jetty.testing.HttpTester; import org.mortbay.jetty.testing.ServletTester; import org.mortbay.util.IO; public class ServletTest extends TestCase { ServletTester tester; /* ------------------------------------------------------------ */ protected void setUp() throws Exception { super.setUp(); tester=new ServletTester(); tester.setContextPath("/context"); tester.addServlet(TestServlet.class, "/servlet/*"); tester.addServlet(HelloServlet.class, "/hello/*"); tester.addServlet("org.mortbay.jetty.servlet.DefaultServlet", "/"); tester.start(); } /* ------------------------------------------------------------ */ protected void tearDown() throws Exception { tester.stop(); tester=null; super.tearDown(); } /* ------------------------------------------------------------ */ public void testServletTesterRaw() throws Exception { // Raw HTTP test requests String requests= "GET /context/servlet/info?query=foo HTTP/1.1\r\n"+ "Host: tester\r\n"+ "\r\n"+ "GET /context/hello HTTP/1.1\r\n"+ "Host: tester\r\n"+ "\r\n"; String responses = tester.getResponses(requests); String expected= "HTTP/1.1 200 OK\r\n"+ "Content-Type: text/html; charset=iso-8859-1\r\n"+ "Content-Length: 21\r\n"+ "\r\n"+ "<h1>Test Servlet" + "HTTP/1.1 200 OK\r\n"+ "Content-Type: text/html; charset=iso-8859-1\r\n"+ "Content-Length: 22\r\n"+ "\r\n"+ "<h1>Hello Servlet"; assertEquals(expected,responses); } /* ------------------------------------------------------------ */ public void testServletTesterClient() throws Exception { String base_url=tester.createSocketConnector(true); URL url = new URL(base_url+"/context/hello/info"); String result = IO.toString(url.openStream()); assertEquals("<h1>Hello Servlet",result); } /* ------------------------------------------------------------ */ public void testHttpTester() throws Exception { // generated and parsed test HttpTester request = new HttpTester(); HttpTester response = new HttpTester(); // test GET request.setMethod("GET"); request.setVersion("HTTP/1.0"); request.setHeader("Host","tester"); request.setURI("/context/hello/info"); response.parse(tester.getResponses(request.generate())); assertTrue(response.getMethod()==null); assertEquals(200,response.getStatus()); assertEquals("<h1>Hello Servlet",response.getContent()); // test GET with content request.setMethod("POST"); request.setContent("<pre>Some Test Content"); request.setHeader("Content-Type","text/html"); response.parse(tester.getResponses(request.generate())); assertTrue(response.getMethod()==null); assertEquals(200,response.getStatus()); assertEquals("<h1>Hello Servlet Some Test Content",response.getContent()); // test redirection request.setMethod("GET"); request.setURI("/context"); request.setContent(null); response.parse(tester.getResponses(request.generate())); assertEquals(302,response.getStatus()); assertEquals("http://tester/context/",response.getHeader("location")); // test not found request.setURI("/context/xxxx"); response.parse(tester.getResponses(request.generate())); assertEquals(404,response.getStatus()); } /* ------------------------------------------------------------ */ public void testBigPost() throws Exception { // generated and parsed test HttpTester request = new HttpTester(); HttpTester response = new HttpTester(); String content = "0123456789abcdef"; content+=content; content+=content; content+=content; content+=content; content+=content; content+=content; content+=content; content+=content; content+=content; content+=content; content+=content; content+=content; content+="!"; request.setMethod("POST"); request.setVersion("HTTP/1.1"); request.setURI("/context/hello/info"); request.setHeader("Host","tester"); request.setHeader("Content-Type","text/plain"); request.setContent(content); String r=request.generate(); r = tester.getResponses(r); response.parse(r); assertTrue(response.getMethod()==null); assertEquals(200,response.getStatus()); assertEquals("<h1>Hello Servlet"+content,response.getContent()); } /* ------------------------------------------------------------ */ public void testCharset() throws Exception { byte[] content_iso_8859_1="abcd=1234&AAA=xxx".getBytes("iso8859-1"); byte[] content_utf_8="abcd=1234&AAA=xxx".getBytes("utf-8"); byte[] content_utf_16="abcd=1234&AAA=xxx".getBytes("utf-16"); String request_iso_8859_1= "POST /context/servlet/post HTTP/1.1\r\n"+ "Host: whatever\r\n"+ "Content-Type: application/x-www-form-urlencoded\r\n"+ "Content-Length: "+content_iso_8859_1.length+"\r\n"+ "\r\n"; String request_utf_8= "POST /context/servlet/post HTTP/1.1\r\n"+ "Host: whatever\r\n"+ "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n"+ "Content-Length: "+content_utf_8.length+"\r\n"+ "\r\n"; String request_utf_16= "POST /context/servlet/post HTTP/1.1\r\n"+ "Host: whatever\r\n"+ "Content-Type: application/x-www-form-urlencoded; charset=utf-16\r\n"+ "Content-Length: "+content_utf_16.length+"\r\n"+ "Connection: close\r\n"+ "\r\n"; ByteArrayBuffer out = new ByteArrayBuffer(4096); out.put(request_iso_8859_1.getBytes("iso8859-1")); out.put(content_iso_8859_1); out.put(request_utf_8.getBytes("iso8859-1")); out.put(content_utf_8); out.put(request_utf_16.getBytes("iso8859-1")); out.put(content_utf_16); ByteArrayBuffer responses = tester.getResponses(out); String expected= "HTTP/1.1 200 OK\r\n"+ "Content-Type: text/html; charset=iso-8859-1\r\n"+ "Content-Length: 21\r\n"+ "\r\n"+ "<h1>Test Servlet"+ "HTTP/1.1 200 OK\r\n"+ "Content-Type: text/html; charset=iso-8859-1\r\n"+ "Content-Length: 21\r\n"+ "\r\n"+ "<h1>Test Servlet"+ "HTTP/1.1 200 OK\r\n"+ "Content-Type: text/html; charset=iso-8859-1\r\n"+ "Connection: close\r\n"+ "\r\n"+ "<h1>Test Servlet"; assertEquals(expected,responses.toString()); } /* ------------------------------------------------------------ */ public static class HelloServlet extends HttpServlet { private static final long serialVersionUID=2779906630657190712L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.getWriter().print("<h1>Hello Servlet"); if (request.getContentLength()>0) response.getWriter().write(IO.toString(request.getInputStream())); } } public static class TestServlet extends HttpServlet { private static final long serialVersionUID=2779906630657190712L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { assertEquals("/context",request.getContextPath()); assertEquals("/servlet",request.getServletPath()); assertEquals("/post",request.getPathInfo()); assertEquals(2,request.getParameterMap().size()); assertEquals("1234",request.getParameter("abcd")); assertEquals("xxx",request.getParameter("AAA")); response.setContentType("text/html"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print("<h1>Test Servlet"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { assertEquals("/context",request.getContextPath()); assertEquals("/servlet",request.getServletPath()); assertEquals("/info",request.getPathInfo()); assertEquals("query=foo",request.getQueryString()); assertEquals(1,request.getParameterMap().size()); assertEquals(1,request.getParameterValues("query").length); assertEquals("foo",request.getParameter("query")); response.setContentType("text/html"); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().print("<h1>Test Servlet"); } } } Other Jetty examples (source code examples)Here is a short list of links related to this Jetty ServletTest.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.