@Test public void test302ResponseWithoutExplicitCacheabilityIsNotReturnedFromCache() throws Exception { originResponse = new BasicClassicHttpResponse(302, "Temporary Redirect"); originResponse.setHeader("Location", "http://foo.example.com/other"); originResponse.removeHeaders("Expires"); originResponse.removeHeaders("Cache-Control"); backendExpectsAnyRequest().andReturn(originResponse).times(2); replayMocks(); execute(request); execute(request); verifyMocks(); }
private void testDoesNotAddHeaderToOriginResponse(final String header) throws Exception { originResponse.removeHeaders(header); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); Assert.assertNull(result.getFirstHeader(header)); }
@Override public boolean removeHeaders(final String name) { return response.removeHeaders(name); }
@Test public void testResponsesToPOSTWithoutCacheControlOrExpiresAreNotCached() throws Exception { emptyMockCacheExpectsNoPuts(); final BasicClassicHttpRequest post = new BasicClassicHttpRequest("POST", "/"); post.setHeader("Content-Length", "128"); post.setEntity(HttpTestUtils.makeBody(128)); originResponse.removeHeaders("Cache-Control"); originResponse.removeHeaders("Expires"); EasyMock.expect( mockExecChain.proceed( EasyMock.isA(ClassicHttpRequest.class), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); execute(post); verifyMocks(); }
@Test public void testProperlyFormattedViaHeaderIsAddedToResponses() throws Exception { originResponse.removeHeaders("Via"); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); assertValidViaHeader(result.getFirstHeader("Via").getValue()); }
@Test public void testRetainsWarningHeadersReceivedFromUpstream() throws Exception { originResponse.removeHeaders("Warning"); final String warning = "199 fred \"misc\""; originResponse.addHeader("Warning", warning); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); Assert.assertEquals(warning, result.getFirstHeader("Warning").getValue()); }
@Test public void testCachedResponsesWithMissingDateHeadersShouldBeAssignedOne() throws Exception { originResponse.removeHeaders("Date"); originResponse.setHeader("Cache-Control","public"); originResponse.setHeader("ETag","\"etag\""); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); Assert.assertNotNull(result.getFirstHeader("Date")); }
private void testDoesNotAddHeaderOnCacheHit(final String header) throws Exception { final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); originResponse.addHeader("Cache-Control", "max-age=3600"); originResponse.removeHeaders(header); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); Assert.assertNull(result.getFirstHeader(header)); }
@Test public void testExpiresHeaderMatchesDateIfAddedToOriginResponse() throws Exception { originResponse.removeHeaders("Expires"); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); final Header expHdr = result.getFirstHeader("Expires"); if (expHdr != null) { Assert.assertEquals(result.getFirstHeader("Date").getValue(), expHdr.getValue()); } }
@Test public void test206ResponseReturnedToClientMustHaveDateHeader() throws Exception { request.addHeader("Range", "bytes=0-50"); originResponse = new BasicClassicHttpResponse(HttpStatus.SC_PARTIAL_CONTENT, "Partial Content"); originResponse.setHeader("Date", DateUtils.formatDate(new Date())); originResponse.setHeader("Server", "MockOrigin/1.0"); originResponse.setEntity(HttpTestUtils.makeBody(500)); originResponse.setHeader("Content-Range", "bytes 0-499/1234"); originResponse.removeHeaders("Date"); EasyMock.expect( mockExecChain.proceed( EasyMock.isA(ClassicHttpRequest.class), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); Assert.assertTrue(result.getCode() != HttpStatus.SC_PARTIAL_CONTENT || result.getFirstHeader("Date") != null); verifyMocks(); }
@Test public void testExpiresHeaderMatchesDateIfAddedToCacheHit() throws Exception { final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); originResponse.setHeader("Cache-Control","max-age=3600"); originResponse.removeHeaders("Expires"); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); final Header expHdr = result.getFirstHeader("Expires"); if (expHdr != null) { Assert.assertEquals(result.getFirstHeader("Date").getValue(), expHdr.getValue()); } }
@Test public void expiresEqualToDateWithNoCacheControlIsNotCacheable() throws Exception { final ClassicHttpRequest req1 = HttpTestUtils.makeDefaultRequest(); final ClassicHttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Date", DateUtils.formatDate(now)); resp1.setHeader("Expires", DateUtils.formatDate(now)); resp1.removeHeaders("Cache-Control"); backendExpectsAnyRequestAndReturn(resp1); final ClassicHttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "max-stale=1000"); final ClassicHttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("ETag", "\"etag2\""); backendExpectsAnyRequestAndReturn(resp2); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); assertTrue(HttpTestUtils.semanticallyTransparent(resp2, result)); }
@Test public void expiresPriorToDateWithNoCacheControlIsNotCacheable() throws Exception { final ClassicHttpRequest req1 = HttpTestUtils.makeDefaultRequest(); final ClassicHttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Date", DateUtils.formatDate(now)); resp1.setHeader("Expires", DateUtils.formatDate(tenSecondsAgo)); resp1.removeHeaders("Cache-Control"); backendExpectsAnyRequestAndReturn(resp1); final ClassicHttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "max-stale=1000"); final ClassicHttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("ETag", "\"etag2\""); backendExpectsAnyRequestAndReturn(resp2); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); assertTrue(HttpTestUtils.semanticallyTransparent(resp2, result)); }
if (decoderFactory != null) { response.setEntity(new DecompressingEntity(response.getEntity(), decoderFactory)); response.removeHeaders(HttpHeaders.CONTENT_LENGTH); response.removeHeaders(HttpHeaders.CONTENT_ENCODING); response.removeHeaders(HttpHeaders.CONTENT_MD5); } else { if (!"identity".equals(codecname) && !ignoreUnknown) {