@Before public void setUp() { now = new Date(); elevenSecondsAgo = new Date(now.getTime() - 11 * 1000L); tenSecondsAgo = new Date(now.getTime() - 10 * 1000L); nineSecondsAgo = new Date(now.getTime() - 9 * 1000L); host = new HttpHost("foo.example.com"); request = new BasicHttpRequest("GET", "/foo"); entry = HttpTestUtils.makeCacheEntry(); impl = new CachedResponseSuitabilityChecker(CacheConfig.DEFAULT); }
@Test public void testIsGetWithCacheControlServableFromCache() { BasicHttpRequest request = new BasicHttpRequest("GET", "someUri"); request.addHeader("Cache-Control", "no-cache"); Assert.assertFalse(policy.isServableFromCache(request)); request = new BasicHttpRequest("GET", "someUri"); request.addHeader("Cache-Control", "no-store"); request.addHeader("Cache-Control", "max-age=20"); Assert.assertFalse(policy.isServableFromCache(request)); request = new BasicHttpRequest("GET", "someUri"); request.addHeader("Cache-Control", "public"); request.addHeader("Cache-Control", "no-store, max-age=20"); Assert.assertFalse(policy.isServableFromCache(request)); }
@Override public HttpRequest copy(final HttpRequest original) { if (original == null) { return null; } final BasicHttpRequest copy = new BasicHttpRequest(original.getMethod(), original.getPath()); copy.setVersion(original.getVersion()); for (final Iterator<Header> it = original.headerIterator(); it.hasNext(); ) { copy.addHeader(it.next()); } copy.setScheme(original.getScheme()); copy.setAuthority(original.getAuthority()); return copy; }
@Override public void addHeader(final String name, final Object value) { Args.notNull(name, "Header name"); addHeader(new BasicHeader(name, value)); }
@Override public void setHeader(final String name, final Object value) { Args.notNull(name, "Header name"); setHeader(new BasicHeader(name, value)); }
@Override public String getRequestUri() { return getPath(); }
@Override public void addHeader(final String name, final Object value) { Args.notNull(name, "Header name"); addHeader(new BasicHeader(name, value)); }
@Override public void setHeader(final String name, final Object value) { Args.notNull(name, "Header name"); setHeader(new BasicHeader(name, value)); }
@Override public String getRequestUri() { return getPath(); }
@Test public void testDoesNotInvalidateGETRequest() throws Exception { final HttpRequest request = new BasicHttpRequest("GET","/"); impl.flushCacheEntriesInvalidatedByRequest(host, request, cacheKeyResolver, mockStorage, operationCallback); verify(mockStorage).getEntry(ArgumentMatchers.eq("http://foo.example.com:80/"), ArgumentMatchers.<FutureCallback<HttpCacheEntry>>any()); verifyNoMoreInteractions(mockStorage); }
@Test public void testIsGetWithPragmaServableFromCache() { BasicHttpRequest request = new BasicHttpRequest("GET", "someUri"); request.addHeader("Pragma", "no-cache"); Assert.assertFalse(policy.isServableFromCache(request)); request = new BasicHttpRequest("GET", "someUri"); request.addHeader("Pragma", "value1"); request.addHeader("Pragma", "value2"); Assert.assertFalse(policy.isServableFromCache(request)); }
@Test public void testDoesNotInvalidateHEADRequest() throws Exception { final HttpRequest request = new BasicHttpRequest("HEAD","/"); impl.flushCacheEntriesInvalidatedByRequest(host, request, cacheKeyResolver, mockStorage, operationCallback); verify(mockStorage).getEntry(ArgumentMatchers.eq("http://foo.example.com:80/"), ArgumentMatchers.<FutureCallback<HttpCacheEntry>>any()); verifyNoMoreInteractions(mockStorage); }
@Test public void testIsHeadWithPragmaServableFromCache() { BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri"); request.addHeader("Pragma", "no-cache"); Assert.assertFalse(policy.isServableFromCache(request)); request = new BasicHttpRequest("HEAD", "someUri"); request.addHeader("Pragma", "value1"); request.addHeader("Pragma", "value2"); Assert.assertFalse(policy.isServableFromCache(request)); }
@Test public void testDoesNotInvalidateHEADCacheEntry() throws Exception { final URI uri = new URI("http://foo.example.com:80/"); final String key = uri.toASCIIString(); final HttpRequest request = new BasicHttpRequest("HEAD", uri); cacheReturnsEntryForUri(key, mockEntry); impl.flushCacheEntriesInvalidatedByRequest(host, request, cacheKeyResolver, mockStorage, operationCallback); verify(mockStorage).getEntry(ArgumentMatchers.eq(key), ArgumentMatchers.<FutureCallback<HttpCacheEntry>>any()); verifyNoMoreInteractions(mockStorage); }
@Test public void testIsHeadWithCacheControlServableFromCache() { BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri"); request.addHeader("Cache-Control", "no-cache"); Assert.assertFalse(policy.isServableFromCache(request)); request = new BasicHttpRequest("HEAD", "someUri"); request.addHeader("Cache-Control", "no-store"); request.addHeader("Cache-Control", "max-age=20"); Assert.assertFalse(policy.isServableFromCache(request)); request = new BasicHttpRequest("HEAD", "someUri"); request.addHeader("Cache-Control", "public"); request.addHeader("Cache-Control", "no-store, max-age=20"); Assert.assertFalse(policy.isServableFromCache(request)); }
@Test public void testDoesNotInvalidateHEADCacheEntryIfSubsequentHEADRequestsAreMadeToTheSameURI() throws Exception { final URI uri = new URI("http://foo.example.com:80/"); final String key = uri.toASCIIString(); final HttpRequest request = new BasicHttpRequest("HEAD", uri); cacheReturnsEntryForUri(key); impl.flushCacheEntriesInvalidatedByRequest(host, request, cacheKeyResolver, mockStorage); verify(mockStorage).getEntry(key); verifyNoMoreInteractions(mockStorage); }
@Test public void testIsHeadServableFromCache() { BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri"); Assert.assertTrue(policy.isServableFromCache(request)); request = new BasicHttpRequest("HEAD", "someUri"); request.addHeader("Cache-Control", "public"); request.addHeader("Cache-Control", "max-age=20"); Assert.assertTrue(policy.isServableFromCache(request)); }
@Test public void testDoesNotInvalidateRequestsWithClientPragmaHeaders() throws Exception { final HttpRequest request = new BasicHttpRequest("GET","/"); request.setHeader("Pragma","no-cache"); impl.flushCacheEntriesInvalidatedByRequest(host, request, cacheKeyResolver, mockStorage, operationCallback); verify(mockStorage).getEntry(ArgumentMatchers.eq("http://foo.example.com:80/"), ArgumentMatchers.<FutureCallback<HttpCacheEntry>>any()); verifyNoMoreInteractions(mockStorage); }
final BasicHttpRequest request = new BasicHttpRequest(method, config.getUri()); final String[] headers = config.getHeaders(); if (headers != null) { final int pos = s.indexOf(':'); if (pos != -1) { request.addHeader(new BasicHeader(s.substring(0, pos).trim(), s.substring(pos + 1))); request.addHeader(new BasicHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE)); request.addHeader(new BasicHeader(HttpHeaders.ACCEPT_ENCODING, "gzip")); request.addHeader(new BasicHeader("SOAPAction", config.getSoapAction()));
@Test public void testDoesNotInvalidateHEADRequest() throws Exception { final HttpRequest request = new BasicHttpRequest("HEAD","/"); impl.flushCacheEntriesInvalidatedByRequest(host, request, cacheKeyResolver, mockStorage); verify(mockStorage).getEntry("http://foo.example.com:80/"); verifyNoMoreInteractions(mockStorage); }