All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fitnesse.responders.testHistory.TestHistoryResponder Maven / Gradle / Ivy

There is a newer version: 20181217
Show newest version
package fitnesse.responders.testHistory;

import java.io.File;
import java.io.UnsupportedEncodingException;

import fitnesse.reporting.history.TestHistory;
import fitnesse.wiki.PathParser;
import org.apache.velocity.VelocityContext;

import fitnesse.FitNesseContext;
import fitnesse.authentication.SecureOperation;
import fitnesse.authentication.SecureReadOperation;
import fitnesse.authentication.SecureResponder;
import fitnesse.http.Request;
import fitnesse.http.Response;
import fitnesse.http.Response.Format;
import fitnesse.http.SimpleResponse;
import fitnesse.html.template.HtmlPage;
import fitnesse.html.template.PageTitle;

public class TestHistoryResponder implements SecureResponder {

  private FitNesseContext context;

  @Override
  public Response makeResponse(FitNesseContext context, Request request) throws UnsupportedEncodingException {
    this.context = context;
    File resultsDirectory = context.getTestHistoryDirectory();
    String pageName = request.getResource();
    TestHistory testHistory = new TestHistory(resultsDirectory, pageName);

    if (formatIsXML(request)) {
      return makeTestHistoryXmlResponse(testHistory);
    } else {
      return makeTestHistoryResponse(testHistory, request, pageName);
    }
  }

  private Response makeTestHistoryResponse(TestHistory testHistory, Request request, String pageName) throws UnsupportedEncodingException {
    HtmlPage page = context.pageFactory.newPage();
    page.setTitle("Test History");
    page.setPageTitle(new PageTitle(PathParser.parse(pageName)));
    page.setNavTemplate("viewNav");
    page.put("viewLocation", request.getResource());
    page.put("testHistory", testHistory);
    page.setMainTemplate("testHistory");
    SimpleResponse response = new SimpleResponse();
    response.setContent(page.html());
    return response;
  }

  private Response makeTestHistoryXmlResponse(TestHistory history) throws UnsupportedEncodingException {
    SimpleResponse response = new SimpleResponse();
    VelocityContext velocityContext = new VelocityContext();
    velocityContext.put("testHistory", history);
    response.setContentType(Format.XML);
    response.setContent(context.pageFactory.render(velocityContext, "testHistoryXML.vm"));
    return response;
  }

  private boolean formatIsXML(Request request) {
    String format = request.getInput("format");
    return "xml".equalsIgnoreCase(format);
  }

  @Override
  public SecureOperation getSecureOperation() {
    return new SecureReadOperation();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy