// 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.run; import util.RegexTestCase; import fitnesse.FitNesseContext; import fitnesse.http.MockRequest; import fitnesse.http.MockResponseSender; import fitnesse.http.Response; import fitnesse.wiki.InMemoryPage; import fitnesse.wiki.PageCrawler; import fitnesse.wiki.PageData; import fitnesse.wiki.PathParser; import fitnesse.wiki.WikiPage; public class FitClientResponderTest extends RegexTestCase { private WikiPage root; private FitClientResponder responder; private MockRequest request; private FitNesseContext context; private Response response; private MockResponseSender sender; private static PageCrawler crawler; private static WikiPage suite; public void setUp() throws Exception { root = InMemoryPage.makeRoot("RooT"); responder = new FitClientResponder(); request = new MockRequest(); context = new FitNesseContext(root); buildSuite(root); } public static void buildSuite(WikiPage root) throws Exception { crawler = root.getPageCrawler(); suite = crawler.addPage(root, PathParser.parse("SuitePage"), "!path classes\n"); WikiPage page1 = crawler.addPage(suite, PathParser.parse("TestPassing"), "!|fitnesse.testutil.PassFixture|\n"); WikiPage page2 = crawler.addPage(suite, PathParser.parse("TestFailing"), "!|fitnesse.testutil.FailFixture|\n"); WikiPage page3 = crawler.addPage(suite, PathParser.parse("TestAnotherFailing"), "!|fitnesse.testutil.FailFixture|\n"); crawler.addPage(suite, PathParser.parse("TestError"), "!|fitnesse.testutil.ErrorFixture|\n"); crawler.addPage(suite, PathParser.parse("TestIgnore"), "!|fitnesse.testutil.IgnoreFixture|\n"); crawler.addPage(suite, PathParser.parse("SomePage"), "This is just some page."); PageData data1 = page1.getData(); PageData data2 = page2.getData(); PageData data3 = page3.getData(); data1.setAttribute(PageData.PropertySUITES, "skip,foo"); data2.setAttribute(PageData.PropertySUITES, "bar,smoke"); data3.setAttribute(PageData.PropertySUITES, "foo"); page1.commit(data1); page2.commit(data2); page3.commit(data3); } public void tearDown() throws Exception { } public void testPageNotFound() throws Exception { String result = getResultFor("MissingPage"); assertSubString("MissingPage was not found", result); } public void testOneTest() throws Exception { String result = getResultFor("SuitePage.TestPassing"); assertEquals("0000000000", result.substring(0, 10)); assertSubString("PassFixture", result); } public void testSuite() throws Exception { String result = getResultFor("SuitePage"); assertEquals("0000000000", result.substring(0, 10)); assertSubString("PassFixture", result); assertSubString("FailFixture", result); assertSubString("ErrorFixture", result); assertSubString("IgnoreFixture", result); assertNotSubString("some page", result); } public void testRelativePageNamesIncluded() throws Exception { String result = getResultFor("SuitePage"); assertNotSubString("SuitePage", result); assertSubString("TestPassing", result); assertSubString("TestFailing", result); assertSubString("TestError", result); assertSubString("TestIgnore", result); } public void testPageThatIsNoATest() throws Exception { String result = getResultFor("SuitePage.SomePage"); assertSubString("SomePage is neither a Test page nor a Suite page.", result); } private String getResultFor(String name) throws Exception { return getResultFor(name, false); } private String getResultFor(String name, boolean addPaths) throws Exception { request.setResource(name); if (addPaths) request.addInput("includePaths", "blah"); response = responder.makeResponse(context, request); sender = new MockResponseSender(); sender.doSending(response); String result = sender.sentData(); return result; } public void testWithClasspathOnSuite() throws Exception { String result = getResultFor("SuitePage", true); assertTrue(result.startsWith("00000000000000000007classes")); } public void testWithClasspathOnTestInSuite() throws Exception { crawler.addPage(suite, PathParser.parse("TestPage"), "!path jar.jar\n!path /some/dir/with/.class/files\n!|fitnesse.testutil.IgnoreFixture|\n"); String result = getResultFor("SuitePage.TestPage", true); assertSubString("classes", result); assertSubString("jar.jar", result); assertSubString("/some/dir/with/.class/files", result); } }