Package org.archive.wayback.replay

Source Code of org.archive.wayback.replay.SelectorReplayDispatcherTest$TestReplayRenderer

/**
*
*/
package org.archive.wayback.replay;

import java.io.IOException;
import java.util.Arrays;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import junit.framework.TestCase;

import org.archive.io.warc.TestWARCReader;
import org.archive.io.warc.TestWARCRecordInfo;
import org.archive.io.warc.WARCRecord;
import org.archive.io.warc.WARCRecordInfo;
import org.archive.wayback.ReplayRenderer;
import org.archive.wayback.ResultURIConverter;
import org.archive.wayback.core.CaptureSearchResult;
import org.archive.wayback.core.CaptureSearchResults;
import org.archive.wayback.core.Resource;
import org.archive.wayback.core.WaybackRequest;
import org.archive.wayback.replay.selector.AlwaysMatchSelector;
import org.archive.wayback.replay.selector.MimeTypeSelector;
import org.archive.wayback.resourcestore.resourcefile.WarcResource;

/**
* test for {@link SelectorReplayDispatcher} and {@link ReplayRendererSelector}
* implementations.
*
*/
public class SelectorReplayDispatcherTest extends TestCase {

  SelectorReplayDispatcher cut;

  static class TestReplayRenderer implements ReplayRenderer {
    String name;

    public TestReplayRenderer(String name) {
      this.name = name;
    }

    @Override
    public void renderResource(HttpServletRequest httpRequest,
        HttpServletResponse httpResponse, WaybackRequest wbRequest,
        CaptureSearchResult result, Resource resource,
        ResultURIConverter uriConverter, CaptureSearchResults results) {
    }

    @Override
    public void renderResource(HttpServletRequest httpRequest,
        HttpServletResponse httpResponse, WaybackRequest wbRequest,
        CaptureSearchResult result, Resource httpHeadersResource,
        Resource payloadResource, ResultURIConverter uriConverter,
        CaptureSearchResults results) {
    }

  }

  /*
   * (non-Javadoc)
   *
   * @see junit.framework.TestCase#setUp()
   */
  protected void setUp() throws Exception {
    super.setUp();
    final MimeTypeSelector CSS_SELECTOR = new MimeTypeSelector();
    CSS_SELECTOR.setMimeContains(Arrays.asList(new String[] {
      "text/javascript", "application/javascript",
      "application/x-javascript" }));
    CSS_SELECTOR.setRenderer(new TestReplayRenderer("js"));
    final AlwaysMatchSelector TRANS_SELECTOR = new AlwaysMatchSelector();
    TRANS_SELECTOR.setRenderer(new TestReplayRenderer("trans"));

    final ReplayRendererSelector[] SELECTORS = { CSS_SELECTOR,
      TRANS_SELECTOR, };
    cut = new SelectorReplayDispatcher();
    cut.setSelectors(Arrays.asList(SELECTORS));
  }

  public static Resource createTestTextResource(String ctype, byte[] payloadBytes)
      throws IOException {
    WARCRecordInfo recinfo = TestWARCRecordInfo.createHttpResponse(ctype,
      payloadBytes);
    TestWARCReader ar = new TestWARCReader(recinfo);
    WARCRecord rec = ar.get(0);
    WarcResource resource = new WarcResource(rec, ar);
    resource.parseHeaders();
    return resource;
  }

  public void testMimeTypeFromIndex() throws Exception {
    WaybackRequest wbRequest = new WaybackRequest();
    CaptureSearchResult result = new CaptureSearchResult();
    result.setMimeType("text/javascript");
    Resource resource = createTestTextResource("text/javascript", "var i=1;".getBytes("UTF-8"));
    ReplayRenderer rr = cut.getRenderer(wbRequest, result, resource);

    assertEquals("js", ((TestReplayRenderer)rr).name);   
  }

  public void testMimeTypeForced() throws Exception {
    WaybackRequest wbRequest = new WaybackRequest();
    wbRequest.setJSContext(true);
    CaptureSearchResult result = new CaptureSearchResult();
    result.setMimeType("text/plain");
    Resource resource = createTestTextResource("text/plain", "a".getBytes("UTF-8"));
    ReplayRenderer rr = cut.getRenderer(wbRequest, result, resource);

    assertEquals("js", ((TestReplayRenderer)rr).name);
  }

}
TOP

Related Classes of org.archive.wayback.replay.SelectorReplayDispatcherTest$TestReplayRenderer

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.