001: package org.nanocontainer.webcontainer;
002:
003: import java.io.File;
004: import java.io.IOException;
005: import java.io.InputStreamReader;
006: import java.io.LineNumberReader;
007: import java.io.PrintWriter;
008: import java.io.Writer;
009: import java.net.Socket;
010:
011: import javax.servlet.http.HttpServletRequest;
012:
013: import org.mortbay.jetty.handler.ErrorHandler;
014: import org.picocontainer.alternatives.EmptyPicoContainer;
015:
016: public class JspTestCase extends WebContainerTestCase {
017:
018: PicoJettyServer server;
019:
020: protected void tearDown() throws Exception {
021: if (server != null) {
022: server.stop();
023: }
024: }
025:
026: public void testCanInstantiateWebContainerContextAndSimpleJspPage()
027: throws InterruptedException, IOException {
028:
029: File warFile = TestHelper.getTestWarFile();
030:
031: server = new PicoJettyServer("localhost", 8080,
032: new EmptyPicoContainer());
033:
034: //server.addRequestLog(new NCSARequestLog("./logs/jetty-yyyy-mm-dd.log"));
035:
036: PicoContext barContext = server.createContext("/bar", true);
037: String absolutePath = warFile.getParentFile().getAbsolutePath();
038: String scratchDir = warFile.getParentFile().getParentFile()
039: .getParentFile().getAbsolutePath()
040: + File.separator + "target" + File.separator + "work";
041: new File(scratchDir).mkdirs();
042: barContext.setDefaultHandling(absolutePath + "/", scratchDir,
043: "*.jsp");
044:
045: server.start();
046:
047: assertEquals("<HTML>\n" + " <HEAD>\n"
048: + " <TITLE>Test JSP</TITLE>\n" + " </HEAD>\n"
049: + " <BODY>\n" + " hello\n" + " </BODY>\n"
050: + "</HTML>",
051: getPage("http://localhost:8080/bar/test.jsp"));
052:
053: }
054:
055: public void testCanInstantiateWebContainerContextAndMissingJspPageHandled()
056: throws InterruptedException, IOException {
057:
058: File warFile = TestHelper.getTestWarFile();
059:
060: server = new PicoJettyServer("localhost", 8080,
061: new EmptyPicoContainer());
062:
063: PicoContext barContext = server.createContext("/bar", true);
064: barContext.addErrorHandler(new MyErrorHandler());
065: String absolutePath = warFile.getParentFile().getAbsolutePath();
066: String scratchDir = warFile.getParentFile().getParentFile()
067: .getParentFile().getAbsolutePath()
068: + File.separator + "target" + File.separator + "work";
069: new File(scratchDir).mkdirs();
070: barContext.setDefaultHandling(absolutePath + "/", scratchDir,
071: "*.jsp");
072:
073: server.start();
074:
075: Socket socket = new Socket("localhost", 8080);
076: PrintWriter writer = new PrintWriter(socket.getOutputStream());
077: writer.write("GET /bar/barfs.jsp HTTP/1.0\n\n\n");
078: writer.flush();
079: LineNumberReader lnr = new LineNumberReader(
080: new InputStreamReader(socket.getInputStream()));
081: String line = lnr.readLine();
082: String result = "";
083: while (line != null) {
084: result = result + line + "\n";
085: line = lnr.readLine();
086: }
087:
088: assertTrue(result.indexOf("Banzai") != -1);
089: assertTrue(result.indexOf("HTTP/1.1 500") != -1);
090:
091: }
092:
093: private static class MyErrorHandler extends ErrorHandler {
094: protected void handleErrorPage(HttpServletRequest request,
095: Writer writer, int code, String message)
096: throws IOException {
097: writer.write("<br>Banzai!<br><br>");
098: super.handleErrorPage(request, writer, code, message);
099: }
100:
101: }
102:
103: }
|