1 package org.nanocontainer.webcontainer; 2 3 import junit.framework.TestCase; 4 import org.mortbay.util.IO; 5 import org.mortbay.jetty.handler.ErrorHandler; 6 7 import org.picocontainer.alternatives.EmptyPicoContainer; 8 9 import javax.servlet.http.HttpServletRequest ; 10 import java.io.*; 11 import java.net.URL ; 12 import java.net.Socket ; 13 14 public class JspTestCase extends TestCase { 15 16 PicoJettyServer server; 17 18 protected void tearDown() throws Exception { 19 if (server != null) { 20 server.stop(); 21 } 22 Thread.sleep(1 * 1000); 23 } 24 25 26 public void testCanInstantiateWebContainerContextAndSimpleJspPage() throws InterruptedException , IOException { 27 28 File warFile = TestHelper.getTestWarFile(); 29 30 server = new PicoJettyServer("localhost", 8080, new EmptyPicoContainer()); 31 32 33 35 36 PicoContextHandler barContext = server.createContext("/bar", true); 37 String absolutePath = warFile.getParentFile().getAbsolutePath(); 38 String scratchDir = warFile.getParentFile().getParentFile().getParentFile().getAbsolutePath() + File.separator + "target" + File.separator + "work"; 39 new File(scratchDir).mkdirs(); 40 barContext.setDefaultHandling(absolutePath + "/", scratchDir, "*.jsp"); 41 42 server.start(); 43 44 Thread.sleep(2 * 1000); 45 46 URL url = new URL ("http://localhost:8080/bar/test.jsp"); 47 assertEquals("<HTML>\n" + 48 " <HEAD>\n" + 49 " <TITLE>Test JSP</TITLE>\n" + 50 " </HEAD>\n" + 51 " <BODY>\n" + 52 " hello\n" + 53 " </BODY>\n" + 54 "</HTML>", IO.toString(url.openStream())); 55 56 Thread.sleep(1 * 1000); 57 58 59 } 60 61 public void testCanInstantiateWebContainerContextAndMissingJspPageHandled() throws InterruptedException , IOException { 62 63 File warFile = TestHelper.getTestWarFile(); 64 65 server = new PicoJettyServer("localhost", 8080, new EmptyPicoContainer()); 66 67 PicoContextHandler barContext = server.createContext("/bar", true); 68 barContext.addErrorHandler(new MyErrorHandler()); 69 String absolutePath = warFile.getParentFile().getAbsolutePath(); 70 String scratchDir = warFile.getParentFile().getParentFile().getParentFile().getAbsolutePath() + File.separator + "target" + File.separator + "work"; 71 new File(scratchDir).mkdirs(); 72 barContext.setDefaultHandling(absolutePath + "/", scratchDir, "*.jsp"); 73 74 server.start(); 75 76 Thread.sleep(2 * 1000); 77 78 79 Socket socket = new Socket ("localhost", 8080); 80 PrintWriter writer = new PrintWriter(socket.getOutputStream()); 81 writer.write("GET /bar/barfs.jsp HTTP/1.0\n\n\n"); 82 writer.flush(); 83 LineNumberReader lnr = new LineNumberReader(new InputStreamReader(socket.getInputStream())); 84 String line = lnr.readLine(); 85 String result = ""; 86 while(line != null) { 87 result = result + line + "\n"; 88 line = lnr.readLine(); 89 } 90 91 assertTrue(result.indexOf("Banzai") != -1); 92 assertTrue(result.indexOf("HTTP/1.1 500") != -1); 93 94 Thread.sleep(1 * 1000); 95 96 97 } 98 private static class MyErrorHandler extends ErrorHandler { 99 protected void handleErrorPage(HttpServletRequest request, Writer writer, int code, String message) 100 throws IOException 101 { 102 writer.write("<br>Banzai!<br><br>"); 103 super.handleErrorPage(request, writer, code, message); 104 } 105 106 } 107 108 } 109 | Popular Tags |