@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 testGetURIWithDefaultPortAndScheme() { Assert.assertEquals("http://www.comcast.net:80/", extractor.generateKey(new HttpHost( "www.comcast.net"), REQUEST_ROOT)); Assert.assertEquals("http://www.fancast.com:80/full_episodes", extractor.generateKey(new HttpHost( "www.fancast.com"), REQUEST_FULL_EPISODES)); }
@Test public void testNotProvidedPortEquivalentToDefaultPortForHttp() { final HttpHost host1 = new HttpHost("foo.example.com"); final HttpHost host2 = new HttpHost("foo.example.com:80"); final HttpRequest req = new BasicHttpRequest("GET", "/"); Assert.assertEquals(extractor.generateKey(host1, req), extractor.generateKey(host2, req)); }
@Test public void testGetURIWithDifferentScheme() { Assert.assertEquals("https://www.comcast.net:443/", extractor.generateKey( new HttpHost("https", "www.comcast.net", -1), REQUEST_ROOT)); Assert.assertEquals("myhttp://www.fancast.com/full_episodes", extractor.generateKey( new HttpHost("myhttp", "www.fancast.com", -1), REQUEST_FULL_EPISODES)); }
@Test public void testGetURIWithDifferentPort() { Assert.assertEquals("http://www.comcast.net:8080/", extractor.generateKey(new HttpHost( "www.comcast.net", 8080), REQUEST_ROOT)); Assert.assertEquals("http://www.fancast.com:9999/full_episodes", extractor.generateKey( new HttpHost("www.fancast.com", 9999), REQUEST_FULL_EPISODES)); }
@Test public void testSchemeNameComparisonsAreCaseInsensitive() { final HttpHost host1 = new HttpHost("http", "foo.example.com", -1); final HttpHost host2 = new HttpHost("HTTP", "foo.example.com", -1); final HttpRequest req = new BasicHttpRequest("GET", "/"); Assert.assertEquals(extractor.generateKey(host1, req), extractor.generateKey(host2, req)); }
@Test public void testCanFlushCacheEntriesAtUri() throws Exception { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req = new HttpDelete("/bar"); final String key = CacheKeyGenerator.INSTANCE.generateKey(host, req); final HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(); backing.map.put(key, entry); impl.flushCacheEntriesFor(host, req); assertNull(backing.map.get(key)); }
@Test public void testGetURIWithQueryParameters() { Assert.assertEquals("http://www.comcast.net:80/?foo=bar", extractor.generateKey( new HttpHost("http", "www.comcast.net", -1), new BasicHttpRequest("GET", "/?foo=bar"))); Assert.assertEquals("http://www.fancast.com:80/full_episodes?foo=bar", extractor.generateKey( new HttpHost("http", "www.fancast.com", -1), new BasicHttpRequest("GET", "/full_episodes?foo=bar"))); }
@Test public void testDoNotFlushCacheEntriesOnGet() throws Exception { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req = new HttpGet("/bar"); final String key = CacheKeyGenerator.INSTANCE.generateKey(host, req); final HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(); backing.map.put(key, entry); impl.flushCacheEntriesFor(host, req); assertEquals(entry, backing.map.get(key)); }
@Test public void testDoNotFlushCacheEntriesOnHead() throws Exception { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req = new HttpHead("/bar"); final String key = CacheKeyGenerator.INSTANCE.generateKey(host, req); final HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(); backing.map.put(key, entry); impl.flushCacheEntriesFor(host, req); assertEquals(entry, backing.map.get(key)); }
@Test public void testExtractsUriFromAbsoluteUriInRequest() { final HttpHost host = new HttpHost("bar.example.com"); final HttpRequest req = new HttpGet("http://foo.example.com/"); Assert.assertEquals("http://foo.example.com:80/", extractor.generateKey(host, req)); }
@Test public void testNotProvidedPortEquivalentToDefaultPortForHttpsAbsoluteURI() { final HttpHost host = new HttpHost("https", "foo.example.com", -1); final HttpGet get1 = new HttpGet("https://bar.example.com/"); final HttpGet get2 = new HttpGet("https://bar.example.com:443/"); final String uri1 = extractor.generateKey(host, get1); final String uri2 = extractor.generateKey(host, get2); Assert.assertEquals(uri1, uri2); }
@Test public void testEquivalentPathEncodingsAreEquivalent() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/~smith/home.html"); final HttpRequest req2 = new BasicHttpRequest("GET", "/%7Esmith/home.html"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }
@Test public void testEquivalentExtraPathEncodingsAreEquivalent() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/~smith/home.html"); final HttpRequest req2 = new BasicHttpRequest("GET", "/%7Esmith%2Fhome.html"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }
@Test public void testExtraDotSegmentsAreIgnored() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/"); final HttpRequest req2 = new HttpGet("http://foo.example.com/./"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }
@Test public void testIntermidateEncodedDotDotSegementsAreEquivalent() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/home.html"); final HttpRequest req2 = new BasicHttpRequest("GET", "/%7Esmith%2F../home.html"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }
@Test public void testIntermidateDotSegementsAreEquivalent() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/~smith/home.html"); final HttpRequest req2 = new BasicHttpRequest("GET", "/%7Esmith/./home.html"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }
@Test public void testEmptyAbsPathIsEquivalentToSlash() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/"); final HttpRequest req2 = new HttpGet("http://foo.example.com"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }
@Test public void testExtraDotDotSegmentsAreIgnored() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/"); final HttpRequest req2 = new HttpGet("http://foo.example.com/.././../"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }
@Test public void testIntermidateDotDotSegementsAreEquivalent() { final HttpHost host = new HttpHost("foo.example.com"); final HttpRequest req1 = new BasicHttpRequest("GET", "/home.html"); final HttpRequest req2 = new BasicHttpRequest("GET", "/%7Esmith/../home.html"); Assert.assertEquals(extractor.generateKey(host, req1), extractor.generateKey(host, req2)); }