diff options
author | Robert Brewer <fumanchu@aminus.org> | 2006-11-22 19:44:12 +0000 |
---|---|---|
committer | Robert Brewer <fumanchu@aminus.org> | 2006-11-22 19:44:12 +0000 |
commit | 0a4aab9a03ab57f45ba235a8805bd32dd73d1fbe (patch) | |
tree | e3bb4d5d77a6ccf085056e54b1cc2bdc7cc3aca2 /cherrypy/test/test_etags.py | |
parent | baa1c18616ab1516499731ea8e842488c596ffd7 (diff) | |
download | cherrypy-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.py | 26 |
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__": |