private static String assert200Ok( CloseableHttpResponse res, String expectedContentType, String expectedContent) throws Exception { assertStatusLine(res, "HTTP/1.1 200 OK"); // Ensure that the 'Last-Modified' header exists and is well-formed. final String lastModified; assertThat(res.containsHeader(HttpHeaders.LAST_MODIFIED), is(true)); lastModified = res.getFirstHeader(HttpHeaders.LAST_MODIFIED).getValue(); HttpHeaderDateFormat.get().parse(lastModified); // Ensure the content and its type are correct. assertThat(EntityUtils.toString(res.getEntity()), is(expectedContent)); assertThat(res.containsHeader(HttpHeaders.CONTENT_TYPE), is(true)); assertThat( res.getFirstHeader(HttpHeaders.CONTENT_TYPE).getValue(), startsWith(expectedContentType)); return lastModified; }
/** * Tests that caching headers are disabled during transactions. The Last-Modified date is only * updated when Modeshape's <code>Session#save()</code> is invoked. Since this operation is not * invoked during a Fedora transaction, the Last-Modified date never gets updated during a * transaction and the delivered content may be stale. Etag won't work either because it is * directly derived from Last-Modified. * * @throws IOException exception thrown during this function */ @Test public void testNoCachingHeadersDuringTransaction() throws IOException { final String txLocation = createTransaction(); final String location; try (final CloseableHttpResponse resp = execute(new HttpPost(txLocation))) { assertFalse( "Last-Modified musn't be present during a transaction", resp.containsHeader("Last-Modified")); assertFalse("ETag must not be present during a transaction", resp.containsHeader("ETag")); // Assert Cache-Control headers are present to invalidate caches location = getLocation(resp); } try (final CloseableHttpResponse responseFromGet = execute(new HttpGet(location))) { final Header[] headers = responseFromGet.getHeaders(CACHE_CONTROL); assertEquals("Two cache control headers expected: ", 2, headers.length); assertEquals(CACHE_CONTROL + "expected", CACHE_CONTROL, headers[0].getName()); assertEquals(CACHE_CONTROL + "expected", CACHE_CONTROL, headers[1].getName()); assertEquals("must-revalidate expected", "must-revalidate", headers[0].getValue()); assertEquals("max-age=0 expected", "max-age=0", headers[1].getValue()); consume(responseFromGet.getEntity()); } }
private static void assert304NotModified( CloseableHttpResponse res, String expectedLastModified, String expectedContentType) { assertStatusLine(res, "HTTP/1.1 304 Not Modified"); // Ensure that the 'Last-Modified' header did not change. assertThat(res.getFirstHeader(HttpHeaders.LAST_MODIFIED).getValue(), is(expectedLastModified)); // Ensure that the content does not exist but its type does. assertThat(res.getEntity(), is(nullValue())); assertThat(res.containsHeader(HttpHeaders.CONTENT_TYPE), is(true)); assertThat( res.getFirstHeader(HttpHeaders.CONTENT_TYPE).getValue(), startsWith(expectedContentType)); }