public void testSimpleEtag() throws Exception {
    MockHttpRequest request =
        new MockHttpRequest() {

          @Override
          public String getMethod() {
            return HttpGet.METHOD_NAME;
          }

          @Override
          public URI getURI() {
            return URI.create("http://test.com");
          }

          @Override
          public boolean containsHeader(String name) {
            return false;
          }
        };
    try {
      interceptor.onPreCall(request, null);
    } catch (UnsupportedOperationException e) {
      fail();
    }
    assertTrue("should not give an exception", true);
  }
  public void testGettingEtag() throws Exception {

    ETag etag = new ETag();

    etag.etag = "test-etag";
    etag.lastModified = "modified";

    interceptor.helper.insertETagForUri(etag, "http://test.com");

    MockHttpRequest request =
        new MockHttpRequest() {

          @Override
          public String getMethod() {
            return HttpGet.METHOD_NAME;
          }

          @Override
          public URI getURI() {
            return URI.create("http://test.com");
          }

          @Override
          public boolean containsHeader(String name) {
            return false;
          }

          @Override
          public void addHeader(Header header) {
            if (header.getName().equals(ETag.ETAG)) {
              assertEquals("test-etag", header.getValue());
            }

            if (header.getName().equals(ETag.LAST_MODIFIED)) {
              assertEquals("modified", header.getValue());
            }
          }
        };
    try {
      interceptor.onPreCall(request, null);
    } catch (UnsupportedOperationException e) {
      fail("should not give an exception");
    }
    assertTrue(true);
  }
  public void testInsertEtag() throws Exception {
    MockHttpResponse response =
        new MockHttpResponse() {
          @Override
          public boolean containsHeader(String name) {
            return true;
          }

          public org.apache.http.StatusLine getStatusLine() {
            return new BasicStatusLine(new ProtocolVersion("http", 1, 1), 200, "OK");
          };

          @Override
          public Header getFirstHeader(String name) {
            if (name.equals(ETag.ETAG)) {
              return new BasicHeader(ETag.ETAG, "test-etag");
            } else if (name.equals(ETag.LAST_MODIFIED)) {
              return new BasicHeader(ETag.LAST_MODIFIED, "last-modified");
            }
            return super.getFirstHeader(name);
          }
        };
    HttpContext context = new BasicHttpContext();
    context.setAttribute(
        ExecutionContext.HTTP_REQUEST,
        new MockHttpRequest() {
          @Override
          public RequestLine getRequestLine() {
            return new BasicRequestLine("GET", "test.com", new ProtocolVersion("http", 1, 1));
          }
        });
    final HttpHost targetHost = new HttpHost("test.com");
    context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, targetHost);
    interceptor.onPostCall(response, context);
    ETag etag = interceptor.helper.getETag("test.com");
    assertEquals("test-etag", etag.etag);
    assertEquals("last-modified", etag.lastModified);
  }