/src/fitnesse/FitNesseServerTest.java
Java | 136 lines | 111 code | 23 blank | 2 comment | 0 complexity | 79cc67b9e2033be2e2d75b284329db3a MD5 | raw file
Possible License(s): BSD-2-Clause, BSD-3-Clause, GPL-2.0
- // Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
- // Released under the terms of the CPL Common Public License version 1.0.
- package fitnesse;
- import java.util.regex.Pattern;
- import util.RegexTestCase;
- import fitnesse.components.LogData;
- import fitnesse.http.MockRequest;
- import fitnesse.http.SimpleResponse;
- import fitnesse.responders.ResponderFactory;
- import fitnesse.responders.files.SampleFileUtility;
- import fitnesse.testutil.MockSocket;
- import fitnesse.testutil.FitNesseUtil;
- import fitnesse.wiki.InMemoryPage;
- import fitnesse.wiki.PageCrawler;
- import fitnesse.wiki.PathParser;
- import fitnesse.wiki.WikiPage;
- import fitnesse.wiki.WikiPageDummy;
- import fitnesse.wiki.WikiPagePath;
- public class FitNesseServerTest extends RegexTestCase {
- private PageCrawler crawler;
- private WikiPage root;
- private WikiPagePath pageOnePath;
- private WikiPagePath pageOneTwoPath;
- private FitNesseContext context;
- public FitNesseServerTest() {
- }
- public void setUp() throws Exception {
- SampleFileUtility.makeSampleFiles();
- root = InMemoryPage.makeRoot("RootPage");
- crawler = root.getPageCrawler();
- pageOnePath = PathParser.parse("PageOne");
- pageOneTwoPath = PathParser.parse("PageOne.PageTwo");
- context = FitNesseUtil.makeTestContext(root);
- }
- public void tearDown() throws Exception {
- SampleFileUtility.deleteSampleFiles();
- }
- public void testSimple() throws Exception {
- crawler.addPage(root, PathParser.parse("SomePage"), "some string");
- String output = getSocketOutput("GET /SomePage HTTP/1.1\r\n\r\n", root);
- String statusLine = "HTTP/1.1 200 OK\r\n";
- assertTrue("Should have statusLine", Pattern.compile(statusLine, Pattern.MULTILINE).matcher(output).find());
- assertTrue("Should have canned Content", hasSubString("some string", output));
- }
- public void testNotFound() throws Exception {
- String output = getSocketOutput("GET /WikiWord HTTP/1.1\r\n\r\n", new WikiPageDummy());
- assertSubString("Page doesn't exist.", output);
- }
- public void testBadRequest() throws Exception {
- String output = getSocketOutput("Bad Request \r\n\r\n", new WikiPageDummy());
- assertSubString("400 Bad Request", output);
- assertSubString("The request string is malformed and can not be parsed", output);
- }
- public void testSomeOtherPage() throws Exception {
- crawler.addPage(root, pageOnePath, "Page One Content");
- String output = getSocketOutput("GET /PageOne HTTP/1.1\r\n\r\n", root);
- String expected = "Page One Content";
- assertTrue("Should have page one", hasSubString(expected, output));
- }
- public void testSecondLevelPage() throws Exception {
- crawler.addPage(root, pageOnePath, "Page One Content");
- crawler.addPage(root, pageOneTwoPath, "Page Two Content");
- String output = getSocketOutput("GET /PageOne.PageTwo HTTP/1.1\r\n\r\n", root);
- String expected = "Page Two Content";
- assertTrue("Should have page Two", hasSubString(expected, output));
- }
- public void testRelativeAndAbsoluteLinks() throws Exception {
- WikiPage root = InMemoryPage.makeRoot("RootPage");
- crawler.addPage(root, pageOnePath, "PageOne");
- crawler.addPage(root, pageOneTwoPath, "PageTwo");
- String output = getSocketOutput("GET /PageOne.PageTwo HTTP/1.1\r\n\r\n", root);
- String expected = "href=\"PageOne.PageTwo\".*PageTwo";
- assertTrue("Should have relative link", hasSubString(expected, output));
- crawler.addPage(root, PathParser.parse("PageTwo"), "PageTwo at root");
- crawler.addPage(root, PathParser.parse("PageOne.PageThree"), "PageThree has link to .PageTwo at the root");
- output = getSocketOutput("GET /PageOne.PageThree HTTP/1.1\r\n\r\n", root);
- expected = "href=\"PageTwo\".*[.]PageTwo";
- assertTrue("Should have absolute link", hasSubString(expected, output));
- }
- public void testServingRegularFiles() throws Exception {
- String output = getSocketOutput("GET /files/testDir/testFile2 HTTP/1.1\r\n\r\n", new WikiPageDummy());
- assertHasRegexp("file2 content", output);
- }
- public void testLoggingDataCreation() {
- MockRequest request = new MockRequest();
- SimpleResponse response = new SimpleResponse(200);
- MockSocket socket = new MockSocket("something");
- socket.setHost("1.2.3.4");
- request.setRequestLine("GET / HTTP/1.1");
- response.setContent("abc");
- request.setCredentials("billy", "bob");
- LogData data = FitNesseExpediter.makeLogData(socket, request, response);
- assertEquals("1.2.3.4", data.host);
- assertNotNull(data.time);
- assertEquals("GET / HTTP/1.1", data.requestLine);
- assertEquals(200, data.status);
- assertEquals(3, data.size);
- assertEquals("billy", data.username);
- }
- private String getSocketOutput(String requestLine, WikiPage page) throws Exception {
- MockSocket s = new MockSocket(requestLine);
- context.rootPagePath = SampleFileUtility.base;
- context.responderFactory = new ResponderFactory(SampleFileUtility.base);
- context.root = page;
- FitNesseServer server = new FitNesseServer(context);
- server.serve(s, 1000);
- String output = s.getOutput();
- return output;
- }
- private static boolean hasSubString(String expected, String output) {
- return Pattern.compile(expected, Pattern.MULTILINE).matcher(output).find();
- }
- }