public static void checkCacheControlHeaders(long testStartTime, HttpServletResponseRecorder response, int ttl, boolean noProxy) { long expires = DateUtil.parseRfc1123Date(response.getHeader("Expires")).getTime(); long lowerBound = testStartTime + (1000L * (ttl - 1)); long upperBound = lowerBound + 2000L; assertGreater("Expires should be at least " + ttl + " seconds more than start time.", lowerBound, expires); assertLesser("Expires should be within 2 seconds of the requested value.", upperBound, expires); if (ttl == 0) { assertEquals("no-cache", response.getHeader("Pragma")); assertEquals("no-cache", response.getHeader("Cache-Control")); } else { List<String> directives = Arrays.asList(StringUtils.split(response.getHeader("Cache-Control"), ',')); assertTrue("Incorrect max-age set.", directives.contains("max-age=" + ttl)); if (noProxy) { assertTrue("No private Cache-Control directive was set.", directives.contains("private")); } else { assertTrue("No public Cache-Control directive was set.", directives.contains("public")); } } }
public static void checkCacheControlHeaders(long testStartTime, HttpServletResponseRecorder response, int ttl, boolean noProxy) { long expires = DateUtil.parseRfc1123Date(response.getHeader("Expires")).getTime(); long lowerBound = testStartTime + (1000L * (ttl - 1)); long upperBound = lowerBound + 2000L; assertGreater("Expires should be at least " + ttl + " seconds more than start time.", lowerBound, expires); assertLesser("Expires should be within 2 seconds of the requested value.", upperBound, expires); if (ttl == 0) { assertEquals("no-cache", response.getHeader("Pragma")); assertEquals("no-cache", response.getHeader("Cache-Control")); } else { List<String> directives = Arrays.asList(StringUtils.split(response.getHeader("Cache-Control"), ',')); assertTrue("Incorrect max-age set.", directives.contains("max-age=" + ttl)); if (noProxy) { assertTrue("No private Cache-Control directive was set.", directives.contains("private")); } else { assertTrue("No public Cache-Control directive was set.", directives.contains("public")); } } }
public static void checkCacheControlHeaders(long testStartTime, HttpServletResponseRecorder response, int ttl, boolean noProxy) { long expires = DateUtil.parseRfc1123Date(response.getHeader("Expires")).getTime(); long lowerBound = testStartTime + (1000L * (ttl - 1)); long upperBound = lowerBound + 2000L; assertGreater("Expires should be at least " + ttl + " seconds more than start time.", lowerBound, expires); assertLesser("Expires should be within 2 seconds of the requested value.", upperBound, expires); if (ttl == 0) { assertEquals("no-cache", response.getHeader("Pragma")); assertEquals("no-cache", response.getHeader("Cache-Control")); } else { List<String> directives = Arrays.asList(StringUtils.split(response.getHeader("Cache-Control"), ',')); assertTrue("Incorrect max-age set.", directives.contains("max-age=" + ttl)); if (noProxy) { assertTrue("No private Cache-Control directive was set.", directives.contains("private")); } else { assertTrue("No public Cache-Control directive was set.", directives.contains("public")); } } }
public static void checkCacheControlHeaders(long testStartTime, HttpServletResponseRecorder response, int ttl, boolean noProxy) { long expires = DateUtil.parseRfc1123Date(response.getHeader("Expires")).getTime(); long lowerBound = testStartTime + (1000L * (ttl - 1)); long upperBound = lowerBound + 2000L; assertGreater("Expires should be at least " + ttl + " seconds more than start time.", lowerBound, expires); assertLesser("Expires should be within 2 seconds of the requested value.", upperBound, expires); if (ttl == 0) { assertEquals("no-cache", response.getHeader("Pragma")); assertEquals("no-cache", response.getHeader("Cache-Control")); } else { List<String> directives = Arrays.asList(StringUtils.split(response.getHeader("Cache-Control"), ',')); assertTrue("Incorrect max-age set.", directives.contains("max-age=" + ttl)); if (noProxy) { assertTrue("No private Cache-Control directive was set.", directives.contains("private")); } else { assertTrue("No public Cache-Control directive was set.", directives.contains("public")); } } }
public static void checkCacheControlHeaders(long testStartTime, HttpServletResponseRecorder response, int ttl, boolean noProxy) { long expires = DateUtil.parseRfc1123Date(response.getHeader("Expires")).getTime(); long lowerBound = testStartTime + (1000L * (ttl - 1)); long upperBound = lowerBound + 2000L; assertGreater("Expires should be at least " + ttl + " seconds more than start time.", lowerBound, expires); assertLesser("Expires should be within 2 seconds of the requested value.", upperBound, expires); if (ttl == 0) { assertEquals("no-cache", response.getHeader("Pragma")); assertEquals("no-cache", response.getHeader("Cache-Control")); } else { List<String> directives = Arrays.asList(StringUtils.split(response.getHeader("Cache-Control"), ',')); assertTrue("Incorrect max-age set.", directives.contains("max-age=" + ttl)); if (noProxy) { assertTrue("No private Cache-Control directive was set.", directives.contains("private")); } else { assertTrue("No public Cache-Control directive was set.", directives.contains("public")); } } }
@Test public void testCopyToServletResponseAndOverrideCacheHeadersForPrivate() throws Exception { FakeTimeSource fakeTime = new FakeTimeSource(); HttpUtil.setTimeSource(fakeTime); HttpResponse response = new HttpResponseBuilder() .setResponseString("response string").setHttpStatusCode(200).addHeader("h1", "v1") .addHeader("h2", "v2").addHeader("Cache-Control", "private,no-store,max-age=10") .addHeader("Expires", "123").create(); HttpServletResponse servletResponse = EasyMock.createMock(HttpServletResponse.class); HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(servletResponse); long testStartTime = fakeTime.currentTimeMillis(); ServletUtil.copyToServletResponseAndOverrideCacheHeaders(response, recorder); assertEquals(200, recorder.getHttpStatusCode()); assertEquals("response string", recorder.getResponseAsString()); assertEquals("v1", recorder.getHeader("h1")); assertEquals("v2", recorder.getHeader("h2")); assertEquals("no-cache", recorder.getHeader("Cache-Control")); long expires = DateUtil.parseRfc1123Date(recorder.getHeader("Expires")).getTime(); assertGreater(testStartTime - 2000L, expires); assertLesser(testStartTime + 2000L, expires); }
@Test public void testCopyToServletResponseAndOverrideCacheHeadersForPrivate() throws Exception { FakeTimeSource fakeTime = new FakeTimeSource(); HttpUtil.setTimeSource(fakeTime); HttpResponse response = new HttpResponseBuilder() .setResponseString("response string").setHttpStatusCode(200).addHeader("h1", "v1") .addHeader("h2", "v2").addHeader("Cache-Control", "private,no-store,max-age=10") .addHeader("Expires", "123").create(); HttpServletResponse servletResponse = EasyMock.createMock(HttpServletResponse.class); HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(servletResponse); long testStartTime = fakeTime.currentTimeMillis(); ServletUtil.copyToServletResponseAndOverrideCacheHeaders(response, recorder); assertEquals(200, recorder.getHttpStatusCode()); assertEquals("response string", recorder.getResponseAsString()); assertEquals("v1", recorder.getHeader("h1")); assertEquals("v2", recorder.getHeader("h2")); assertEquals("no-cache", recorder.getHeader("Cache-Control")); long expires = DateUtil.parseRfc1123Date(recorder.getHeader("Expires")).getTime(); assertGreater(testStartTime - 2000L, expires); assertLesser(testStartTime + 2000L, expires); }