@Test
public void test1xxWarningsAreDeletedAfterSuccessfulRevalidation() throws Exception {
final Date now = new Date();
final Date tenSecondsAgo = new Date(now.getTime() - 25 * 1000L);
final HttpRequestWrapper req1 = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
final HttpResponse resp1 = HttpTestUtils.make200Response();
resp1.setHeader("Date", DateUtils.formatDate(tenSecondsAgo));
resp1.setHeader("ETag", "\"etag\"");
resp1.setHeader("Cache-Control", "max-age=5");
resp1.setHeader("Warning", "110 squid \"stale stuff\"");
resp1.setHeader("Via", "1.1 fred");
final HttpRequestWrapper req2 = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
final HttpRequestWrapper validate = HttpRequestWrapper.wrap(
new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
validate.setHeader("If-None-Match", "\"etag\"");
final HttpResponse resp2 = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_NOT_MODIFIED,
"Not Modified");
resp2.setHeader("Date", DateUtils.formatDate(now));
resp2.setHeader("Server", "MockServer/1.0");
resp2.setHeader("ETag", "\"etag\"");
resp2.setHeader("Via", "1.1 fred");
backendExpectsAnyRequestAndReturn(resp1);
EasyMock.expect(
mockBackend.execute(
EasyMock.eq(route),
eqRequest(validate),
EasyMock.isA(HttpClientContext.class),
EasyMock.<HttpExecutionAware>isNull())).andReturn(
Proxies.enhanceResponse(resp2));
final HttpRequestWrapper req3 = HttpRequestWrapper.wrap(new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1));
replayMocks();
final HttpResponse stale = impl.execute(route, req1, context, null);
Assert.assertNotNull(stale.getFirstHeader("Warning"));