Package fitnesse.responders

Source Code of fitnesse.responders.WikiPageResponderTest

// 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;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static util.RegexTestCase.assertDoesntHaveRegexp;
import static util.RegexTestCase.assertHasRegexp;
import static util.RegexTestCase.assertNotSubString;
import static util.RegexTestCase.assertSubString;

import java.util.HashMap;
import java.util.Map;

import fitnesse.FitNesseContext;
import fitnesse.Responder;
import fitnesse.authentication.SecureOperation;
import fitnesse.authentication.SecureReadOperation;
import fitnesse.authentication.SecureResponder;
import fitnesse.http.MockRequest;
import fitnesse.http.SimpleResponse;
import fitnesse.testutil.FitNesseUtil;
import fitnesse.wiki.PageData;
import fitnesse.wiki.PathParser;
import fitnesse.wiki.WikiImportProperty;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.WikiPageProperties;
import fitnesse.wiki.WikiPageUtil;
import fitnesse.wiki.fs.InMemoryPage;
import org.junit.Before;
import org.junit.Test;

public class WikiPageResponderTest {
  private WikiPage root;
  private FitNesseContext context;

  @Before
  public void setUp() throws Exception {
    root = InMemoryPage.makeRoot("root");
    context = FitNesseUtil.makeTestContext(root);
  }

  @Test
  public void testResponse() throws Exception {
    WikiPage page = WikiPageUtil.addPage(root, PathParser.parse("ChildPage"), "child content");
    PageData data = page.getData();
    WikiPageProperties properties = data.getProperties();
    properties.set(PageData.PropertySUITES, "Wiki Page tags");
    page.commit(data);

    final MockRequest request = new MockRequest();
    request.setResource("ChildPage");

    final Responder responder = new WikiPageResponder();
    final SimpleResponse response = (SimpleResponse) responder.makeResponse(context, request);

    assertEquals(200, response.getStatus());

    final String body = response.getContent();

    assertSubString("<html>", body);
    assertSubString("<body", body);
    assertSubString("child content", body);
    assertSubString("href=\"ChildPage?whereUsed\"", body);
    assertSubString("Cache-Control: max-age=0", response.makeHttpHeaders());
    assertSubString("<h5> Wiki Page tags</h5>", body);
  }

  @Test
  public void testResponseWithNonWikiWordChildPage() throws Exception {
    WikiPage page = WikiPageUtil.addPage(root, PathParser.parse("page"), "content");
    WikiPage childPage = WikiPageUtil.addPage(page, PathParser.parse("child_page"), "child content");

    final MockRequest request = new MockRequest();
    request.setResource("page.child_page");

    final Responder responder = new WikiPageResponder();
    final SimpleResponse response = (SimpleResponse) responder.makeResponse(context, request);

    assertEquals(200, response.getStatus());

    final String body = response.getContent();

    assertSubString("child content", body);
  }

  @Test
  public void testAttributeButtons() throws Exception {
    WikiPageUtil.addPage(root, PathParser.parse("NormalPage"), "");
    final WikiPage noButtonsPage = WikiPageUtil.addPage(root, PathParser.parse("NoButtonPage"), "");
    for (final String attribute : PageData.NON_SECURITY_ATTRIBUTES) {
      final PageData data = noButtonsPage.getData();
      data.removeAttribute(attribute);
      noButtonsPage.commit(data);
    }

    SimpleResponse response = requestPage("NormalPage");
    assertSubString(">Edit</a>", response.getContent());
    assertSubString(">Search</a>", response.getContent());
    assertSubString(">Versions</a>", response.getContent());
    assertNotSubString(">Suite</a>", response.getContent());
    assertNotSubString(">Test</a>", response.getContent());

    response = requestPage("NoButtonPage");
    assertNotSubString(">Edit</a>", response.getContent());
    assertNotSubString(">Search</a>", response.getContent());
    assertNotSubString(">Versions</a>", response.getContent());
    assertNotSubString(">Suite</a>", response.getContent());
    assertNotSubString(">Test</a>", response.getContent());
  }

  @Test
  public void testHeadersAndFooters() throws Exception {
    WikiPageUtil.addPage(root, PathParser.parse("NormalPage"), "normal");
    WikiPageUtil.addPage(root, PathParser.parse("TestPage"), "test page");
    WikiPageUtil.addPage(root, PathParser.parse("PageHeader"), "header");
    WikiPageUtil.addPage(root, PathParser.parse("PageFooter"), "footer");
    WikiPageUtil.addPage(root, PathParser.parse("SetUp"), "setup");
    WikiPageUtil.addPage(root, PathParser.parse("TearDown"), "teardown");
    WikiPageUtil.addPage(root, PathParser.parse("SuiteSetUp"), "suite setup");
    WikiPageUtil.addPage(root, PathParser.parse("SuiteTearDown"), "suite teardown");

    SimpleResponse response = requestPage("NormalPage");
    String content = response.getContent();
    assertHasRegexp("header", content);
    assertHasRegexp("normal", content);
    assertHasRegexp("footer", content);
    assertDoesntHaveRegexp("setup", content);
    assertDoesntHaveRegexp("teardown", content);
    assertDoesntHaveRegexp("suite setup", content);
    assertDoesntHaveRegexp("suite teardown", content);

    response = requestPage("TestPage");
    content = response.getContent();
    assertHasRegexp("header", content);
    assertHasRegexp("test page", content);
    assertHasRegexp("footer", content);
    assertHasRegexp("setup", content);
    assertHasRegexp("teardown", content);
    assertHasRegexp("suite setup", content);
    assertHasRegexp("suite teardown", content);
  }

  @Test
  public void testInputValues() throws Exception {
    WikiPageUtil.addPage(root, PathParser.parse("NormalPage"), "normal ${normalParam}");
    WikiPageUtil.addPage(root, PathParser.parse("TestPage"), "test page ${testPageParam}");
    WikiPageUtil.addPage(root, PathParser.parse("PageHeader"), "header ${headerParam}");
    WikiPageUtil.addPage(root, PathParser.parse("PageFooter"), "footer ${footerParam}");
    WikiPageUtil.addPage(root, PathParser.parse("SetUp"), "setup ${setupParam}");
    WikiPageUtil.addPage(root, PathParser.parse("TearDown"), "teardown ${teardownParam}");
    WikiPageUtil.addPage(root, PathParser.parse("SuiteSetUp"), "suite setup ${suiteSetupParam}");
    WikiPageUtil.addPage(root, PathParser.parse("SuiteTearDown"), "suite teardown ${suiteTeardownParam}");

    Map<String,String> urlInputValues = new HashMap<String,String>();
    urlInputValues.put("normalParam", "normalValue");
    urlInputValues.put("headerParam", "headerValue");
    urlInputValues.put("footerParam", "footerValue");

    SimpleResponse response = requestPage("NormalPage", urlInputValues);
    String content = response.getContent();
    assertHasRegexp("header headerValue", content);
    assertHasRegexp("normal normalValue", content);
    assertHasRegexp("footer footerValue", content);


    urlInputValues = new HashMap<String,String>();
    urlInputValues.put("headerParam", "headerValue");
    urlInputValues.put("footerParam", "footerValue");
    urlInputValues.put("testPageParam", "testPageValue");
    urlInputValues.put("footerParam", "footerValue");
    urlInputValues.put("setupParam", "setupValue");
    urlInputValues.put("teardownParam", "teardownValue");
    urlInputValues.put("suiteSetupParam", "suiteSetupValue");
    urlInputValues.put("suiteTeardownParam", "suiteTeardownValue");


    response = requestPage("TestPage", urlInputValues);
    content = response.getContent();
    assertHasRegexp("header headerValue", content);
    assertHasRegexp("test page testPageValue", content);
    assertHasRegexp("footer footerValue", content);
    assertHasRegexp("setup setupValue", content);
    assertHasRegexp("teardown teardownValue", content);
    assertHasRegexp("suite setup suiteSetupValue", content);
    assertHasRegexp("suite teardown suiteTeardownValue", content);
  }

  private SimpleResponse requestPage(String name) throws Exception {
      return requestPage(name, new HashMap<String,String>());
  }

  private SimpleResponse requestPage(String name, Map<String,String> inputs) throws Exception {
    final MockRequest request = new MockRequest();
    request.setResource(name);

    for(String input: inputs.keySet()){
        request.addInput(input, inputs.get(input));
    }
    final Responder responder = new WikiPageResponder();
    return (SimpleResponse) responder.makeResponse(context, request);
  }

  @Test
  public void testImportedPageIndication() throws Exception {
    final WikiPage page = WikiPageUtil.addPage(root, PathParser.parse("SamplePage"));
    final PageData data = page.getData();
    final WikiImportProperty importProperty = new WikiImportProperty("blah");
    importProperty.addTo(data.getProperties());
    page.commit(data);

    final String content = requestPage("SamplePage").getContent();

    assertSubString("<body class=\"imported\">", content);
  }

  @Test
  public void testImportedPageIndicationNotOnRoot() throws Exception {
    final WikiPage page = WikiPageUtil.addPage(root, PathParser.parse("SamplePage"));
    final PageData data = page.getData();
    final WikiImportProperty importProperty = new WikiImportProperty("blah");
    importProperty.setRoot(true);
    importProperty.addTo(data.getProperties());
    page.commit(data);

    final String content = requestPage("SamplePage").getContent();

    assertNotSubString("<body class=\"imported\">", content);
  }

  @Test
  public void testResponderIsSecureReadOperation() throws Exception {
    final Responder responder = new WikiPageResponder();
    assertTrue(responder instanceof SecureResponder);
    final SecureOperation operation = ((SecureResponder) responder).getSecureOperation();
    assertEquals(SecureReadOperation.class, operation.getClass());
  }
}
TOP

Related Classes of fitnesse.responders.WikiPageResponderTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.