// 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.responders.editing; import util.RegexTestCase; import fitnesse.FitNesseContext; import fitnesse.html.HtmlTag; import fitnesse.html.HtmlUtil; import fitnesse.http.MockRequest; import fitnesse.http.SimpleResponse; import fitnesse.testutil.FitNesseUtil; import fitnesse.wiki.InMemoryPage; import fitnesse.wiki.PageCrawler; import fitnesse.wiki.PathParser; import fitnesse.wiki.WikiPage; public class EditResponderTest extends RegexTestCase { private WikiPage root; private MockRequest request; private EditResponder responder; private PageCrawler crawler; public void setUp() throws Exception { root = InMemoryPage.makeRoot("root"); FitNesseUtil.makeTestContext(root); crawler = root.getPageCrawler(); request = new MockRequest(); responder = new EditResponder(); } public void testResponse() throws Exception { crawler.addPage(root, PathParser.parse("ChildPage"), "child content with <html>"); request.setResource("ChildPage"); SimpleResponse response = (SimpleResponse) responder.makeResponse(new FitNesseContext(root), request); assertEquals(200, response.getStatus()); String body = response.getContent(); assertSubString("<html>", body); assertSubString("<form", body); assertSubString("method=\"post\"", body); assertSubString("child content with <html>", body); assertSubString("name=\"responder\"", body); assertSubString("name=\"" + EditResponder.TIME_STAMP + "\"", body); assertSubString("name=\"" + EditResponder.TICKET_ID + "\"", body); assertSubString("name=\"" + EditResponder.HELP_TEXT + "\"", body); assertSubString("type=\"submit\"", body); assertSubString(String.format("textarea", EditResponder.CONTENT_INPUT_NAME), body); } public void testResponseWhenNonexistentPageRequestsed() throws Exception { request.setResource("NonExistentPage"); request.addInput("nonExistent", true); FitNesseContext context = new FitNesseContext(root); SimpleResponse response = (SimpleResponse) responder.makeResponse(context, request); assertEquals(200, response.getStatus()); String body = response.getContent(); assertSubString("<html>", body); assertSubString("<form", body); assertSubString("method=\"post\"", body); assertSubString(context.defaultNewPageContent, body); assertSubString("name=\"responder\"", body); assertSubString("name=\"" + EditResponder.TIME_STAMP + "\"", body); assertSubString("name=\"" + EditResponder.TICKET_ID + "\"", body); assertSubString("type=\"submit\"", body); } public void testRedirectToRefererEffect() throws Exception { crawler.addPage(root, PathParser.parse("ChildPage"), "child content with <html>"); request.setResource("ChildPage"); request.addInput("redirectToReferer", true); request.addInput("redirectAction", "boom"); request.addHeader("Referer", "http://fitnesse.org:8080/SomePage"); SimpleResponse response = (SimpleResponse) responder.makeResponse(new FitNesseContext(root), request); assertEquals(200, response.getStatus()); String body = response.getContent(); assertSubString("name=\"redirect\" value=\"http://fitnesse.org:8080/SomePage?boom\"", body); } public void testPasteFromExcelExists() throws Exception { SimpleResponse response = (SimpleResponse) responder.makeResponse(new FitNesseContext(root), request); String body = response.getContent(); assertMatches("SpreadsheetTranslator.js", body); assertMatches("spreadsheetSupport.js", body); } public void testFormatterScriptsExist() throws Exception { SimpleResponse response = (SimpleResponse) responder.makeResponse(new FitNesseContext(root), request); String body = response.getContent(); assertMatches("WikiFormatter.js", body); assertMatches("wikiFormatterSupport.js", body); } public void testWrapScriptExists() throws Exception { SimpleResponse response = (SimpleResponse) responder.makeResponse(new FitNesseContext(root), request); String body = response.getContent(); assertMatches("textareaWrapSupport.js", body); } public void testMissingPageDoesNotGetCreated() throws Exception { request.setResource("MissingPage"); responder.makeResponse(new FitNesseContext(root), request); assertFalse(root.hasChildPage("MissingPage")); } }