Fixed issue #12 - Cache-Control: only-if-cached incorrectly does request if item not in cache
diff --git a/httplib2test.py b/httplib2test.py
index f882b17..a0b4dc5 100755
--- a/httplib2test.py
+++ b/httplib2test.py
@@ -205,13 +205,27 @@
self.assertEqual(response.status, 200)
self.assertEqual(response.previous, None)
+ def testGetOnlyIfCachedCacheHit(self):
+ # Test that can do a GET with cache and 'only-if-cached'
+ uri = urlparse.urljoin(base, "304/test_etag.txt")
+ (response, content) = self.http.request(uri, "GET")
+ (response, content) = self.http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
+ self.assertEqual(response.fromcache, True)
+ self.assertEqual(response.status, 200)
+
+ def testGetOnlyIfCachedCacheMissCache(self):
+ # Test that can do a GET with cache and 'only-if-cached'
+ uri = urlparse.urljoin(base, "304/test_etag.txt")
+ (response, content) = self.http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
+ self.assertEqual(response.fromcache, False)
+ self.assertEqual(response.status, 504)
+
def testGetOnlyIfCachedCacheMiss(self):
# Test that can do a GET with no cache with 'only-if-cached'
- http = httplib2.Http()
uri = urlparse.urljoin(base, "304/test_etag.txt")
- (response, content) = http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
+ (response, content) = self.http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
self.assertEqual(response.fromcache, False)
- self.assertEqual(response.status, 200)
+ self.assertEqual(response.status, 504)
def testGetOnlyIfCachedNoCacheAtAll(self):
# Test that can do a GET with no cache with 'only-if-cached'
@@ -222,7 +236,7 @@
uri = urlparse.urljoin(base, "304/test_etag.txt")
(response, content) = http.request(uri, "GET", headers={'cache-control': 'only-if-cached'})
self.assertEqual(response.fromcache, False)
- self.assertEqual(response.status, 200)
+ self.assertEqual(response.status, 504)
def testUserAgent(self):
# Test that we provide a default user-agent