summaryrefslogtreecommitdiff
path: root/cherrypy/test/test_etags.py
diff options
context:
space:
mode:
authorRobert Brewer <fumanchu@aminus.org>2006-11-22 19:44:12 +0000
committerRobert Brewer <fumanchu@aminus.org>2006-11-22 19:44:12 +0000
commit0a4aab9a03ab57f45ba235a8805bd32dd73d1fbe (patch)
treee3bb4d5d77a6ccf085056e54b1cc2bdc7cc3aca2 /cherrypy/test/test_etags.py
parentbaa1c18616ab1516499731ea8e842488c596ffd7 (diff)
downloadcherrypy-git-0a4aab9a03ab57f45ba235a8805bd32dd73d1fbe.tar.gz
Solution for #602 (ETag autotags are incorrect on 304):
1. Added WARNING to docstring. 2. Only generate ETag if status == 200. 3. Now performs If-Match, If-None-Match tests even if no ETag provided. 4. Corrected "< 299" to "<= 299".
Diffstat (limited to 'cherrypy/test/test_etags.py')
-rw-r--r--cherrypy/test/test_etags.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/cherrypy/test/test_etags.py b/cherrypy/test/test_etags.py
index a1deec65..b7c5de3e 100644
--- a/cherrypy/test/test_etags.py
+++ b/cherrypy/test/test_etags.py
@@ -10,8 +10,12 @@ def setup_server():
return "Oh wah ta goo Siam."
resource.exposed = True
- def fail(self):
- raise cherrypy.HTTPError(412)
+ def fail(self, code):
+ code = int(code)
+ if 300 <= code <= 399:
+ raise cherrypy.HTTPRedirect([], code)
+ else:
+ raise cherrypy.HTTPError(code)
fail.exposed = True
conf = {'/': {'tools.etags.on': True,
@@ -28,17 +32,15 @@ class ETagTest(helper.CPWebCase):
self.assertStatus('200 OK')
self.assertHeader('Content-Type', 'text/html')
self.assertBody('Oh wah ta goo Siam.')
- self.assertHeader('ETag')
- for k, v in self.headers:
- if k.lower() == 'etag':
- etag = v
- break
+ etag = self.assertHeader('ETag')
# Test If-Match (both valid and invalid)
self.getPage("/resource", headers=[('If-Match', etag)])
self.assertStatus("200 OK")
self.getPage("/resource", headers=[('If-Match', "*")])
self.assertStatus("200 OK")
+ self.getPage("/resource", headers=[('If-Match', "*")], method="POST")
+ self.assertStatus("200 OK")
self.getPage("/resource", headers=[('If-Match', "a bogus tag")])
self.assertStatus("412 Precondition Failed")
@@ -52,9 +54,15 @@ class ETagTest(helper.CPWebCase):
self.getPage("/resource", headers=[('If-None-Match', "a bogus tag")])
self.assertStatus("200 OK")
- # Test raising 412 in page handler
- self.getPage("/fail", headers=[('If-Match', etag)])
+ # Test raising errors in page handler
+ self.getPage("/fail/412", headers=[('If-Match', etag)])
+ self.assertStatus(412)
+ self.getPage("/fail/304", headers=[('If-Match', etag)])
+ self.assertStatus(304)
+ self.getPage("/fail/412", headers=[('If-None-Match', "*")])
self.assertStatus(412)
+ self.getPage("/fail/304", headers=[('If-None-Match', "*")])
+ self.assertStatus(304)
if __name__ == "__main__":