@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()); } }
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)); }
private void testDoesNotModifyHeaderOnResponses(final String headerName) throws Exception { final String headerValue = HttpTestUtils .getCanonicalHeaderValue(originResponse, headerName); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); assertEquals(headerValue, result.getFirstHeader(headerName).getValue()); }
private void testDoesNotModifyHeaderFromOriginResponseWithNoTransform(final String header, final String value) throws Exception { originResponse.addHeader("Cache-Control","no-transform"); originResponse.setHeader(header, value); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); Assert.assertEquals(value, result.getFirstHeader(header).getValue()); }
@Test public void testDoesNotModifyServerResponseHeader() throws Exception { final String server = "MockServer/1.0"; originResponse.setHeader("Server", server); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); Assert.assertEquals(server, result.getFirstHeader("Server").getValue()); }
@Test public void testProperlyFormattedViaHeaderIsAddedToResponses() throws Exception { originResponse.removeHeaders("Via"); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); assertValidViaHeader(result.getFirstHeader("Via").getValue()); }
private void testDoesNotModifyHeaderFromOrigin(final String header, final String value) throws Exception { originResponse = HttpTestUtils.make200Response(); originResponse.setHeader(header, value); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); Assert.assertEquals(value, result.getFirstHeader(header).getValue()); }
@Test public void testTransmitsAgeHeaderIfIncomingAgeHeaderTooBig() throws Exception { final String reallyOldAge = "1" + Long.MAX_VALUE; originResponse.setHeader("Age",reallyOldAge); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); Assert.assertEquals("2147483648", result.getFirstHeader("Age").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")); }
@Test public void testMustIncludeAllowHeaderFromAnOrigin405Response() throws Exception { originResponse = new BasicClassicHttpResponse(405, "Method Not Allowed"); originResponse.setHeader("Allow", "GET, HEAD"); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); if (result.getCode() == 405) { Assert.assertNotNull(result.getFirstHeader("Allow")); } verifyMocks(); }
@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 testMustIncludeProxyAuthenticateHeaderFromAnOrigin407Response() throws Exception { originResponse = new BasicClassicHttpResponse(407, "Proxy Authentication Required"); originResponse.setHeader("Proxy-Authenticate", "x-scheme x-param"); EasyMock.expect( mockExecChain.proceed( EasyMock.isA(ClassicHttpRequest.class), EasyMock.isA(ExecChain.Scope.class))).andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); if (result.getCode() == 407) { Assert.assertNotNull(result.getFirstHeader("Proxy-Authenticate")); } verifyMocks(); }
@Test public void testDoesNotAddNewWarningHeaderIfResponseArrivesStale() throws Exception { originResponse.setHeader("Date", DateUtils.formatDate(tenSecondsAgo)); originResponse.setHeader("Cache-Control","public, max-age=5"); originResponse.setHeader("ETag","\"etag\""); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); assertNull(result.getFirstHeader("Warning")); }
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)); }
private void testDoesNotModifyHeaderOnCachedResponseWithNoTransform(final String header, final String value) throws Exception { final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); originResponse.addHeader("Cache-Control","max-age=3600, no-transform"); originResponse.setHeader(header, value); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); Assert.assertEquals(value, result.getFirstHeader(header).getValue()); }
private void testDoesNotModifyHeaderFromOriginOnCacheHit(final String header, final String value) throws Exception { final ClassicHttpRequest req1 = new BasicClassicHttpRequest("GET", "/"); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); originResponse = HttpTestUtils.make200Response(); originResponse.setHeader("Cache-Control", "max-age=3600"); originResponse.setHeader(header, value); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); Assert.assertEquals(value, result.getFirstHeader(header).getValue()); }
@Test public void testForwardsExistingWarningHeadersOnResponseThatArrivesStale() throws Exception { originResponse.setHeader("Date", DateUtils.formatDate(tenSecondsAgo)); originResponse.setHeader("Cache-Control","public, max-age=5"); originResponse.setHeader("ETag","\"etag\""); originResponse.addHeader("Age","10"); final String warning = "110 fred \"Response is stale\""; originResponse.addHeader("Warning",warning); backendExpectsAnyRequest().andReturn(originResponse); replayMocks(); final ClassicHttpResponse result = execute(request); verifyMocks(); assertEquals(warning, result.getFirstHeader("Warning").getValue()); }
@Test public void testMayReturnStaleResponseIfClientExplicitlySpecifiesAcceptableMaxStale() throws Exception { final ClassicHttpRequest req1 = requestToPopulateStaleCacheEntry(); final ClassicHttpRequest req2 = new BasicClassicHttpRequest("GET", "/"); req2.setHeader("Cache-Control","max-stale=20"); backendExpectsAnyRequest().andThrow(new IOException()).times(0,1); replayMocks(); execute(req1); final ClassicHttpResponse result = execute(req2); verifyMocks(); assertEquals(HttpStatus.SC_OK, result.getCode()); assertNotNull(result.getFirstHeader("Warning")); }
@Test public void testSetsViaHeaderOnResponseIfRequestNotServableFromCache() throws Exception { impl = createCachingExecChain(new BasicHttpCache(), CacheConfig.DEFAULT); final ClassicHttpRequest req = new HttpGet("http://foo.example.com/"); req.setHeader("Cache-Control", "no-cache"); final ClassicHttpResponse resp = new BasicClassicHttpResponse(HttpStatus.SC_NO_CONTENT, "No Content"); backendExpectsAnyRequestAndReturn(resp); replayMocks(); final ClassicHttpResponse result = execute(req); verifyMocks(); Assert.assertNotNull(result.getFirstHeader("Via")); }
private void shouldStripEntityHeaderFromOrigin304ResponseToStrongValidation( final String entityHeader, final String entityHeaderValue) throws Exception { final ClassicHttpRequest req = HttpTestUtils.makeDefaultRequest(); req.setHeader("If-None-Match", "\"etag\""); final ClassicHttpResponse resp = new BasicClassicHttpResponse(HttpStatus.SC_NOT_MODIFIED, "Not Modified"); resp.setHeader("Date", DateUtils.formatDate(now)); resp.setHeader("Etag", "\"etag\""); resp.setHeader(entityHeader, entityHeaderValue); backendExpectsAnyRequestAndReturn(resp); replayMocks(); final ClassicHttpResponse result = execute(req); verifyMocks(); assertNull(result.getFirstHeader(entityHeader)); }