Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

root/branches/cherrypy-2.x/cherrypy/test/test_etags.py

Revision 1498 (checked in by fumanchu, 2 years ago)

2.x backport of [1148] (test/modpy fixes and docs).

  • Property svn:eol-style set to native
Line 
1 import test
2 test.prefer_parent_path()
3
4 import cherrypy
5 from cherrypy.lib import cptools
6
7
8 def setup_server():
9     class Root:
10         def resource(self):
11             cptools.validate_etags(autotags=True)
12             return "Oh wah ta goo Siam."
13         resource.exposed = True
14    
15     cherrypy.tree.mount(Root())
16     cherrypy.config.update({
17         'log_to_screen': False,
18         'environment': 'production',
19         'show_tracebacks': True,
20         })
21
22 import helper
23
24 class ETagTest(helper.CPWebCase):
25    
26     def testETags(self):
27         self.getPage("/resource")
28         self.assertStatus('200 OK')
29         self.assertHeader('Content-Type', 'text/html')
30         self.assertBody('Oh wah ta goo Siam.')
31         self.assertHeader('ETag')
32         for k, v in self.headers:
33             if k.lower() == 'etag':
34                 etag = v
35                 break
36        
37         # Test If-Match (both valid and invalid)
38         self.getPage("/resource", headers=[('If-Match', etag)])
39         self.assertStatus("200 OK")
40         self.getPage("/resource", headers=[('If-Match', "*")])
41         self.assertStatus("200 OK")
42         self.getPage("/resource", headers=[('If-Match', "a bogus tag")])
43         self.assertStatus("412 Precondition Failed")
44        
45         # Test If-None-Match (both valid and invalid)
46         self.getPage("/resource", headers=[('If-None-Match', etag)])
47         self.assertStatus(304)
48         self.getPage("/resource", method='POST', headers=[('If-None-Match', etag)])
49         self.assertStatus("412 Precondition Failed")
50         self.getPage("/resource", headers=[('If-None-Match', "*")])
51         self.assertStatus(304)
52         self.getPage("/resource", headers=[('If-None-Match', "a bogus tag")])
53         self.assertStatus("200 OK")
54
55 if __name__ == "__main__":
56     setup_server()
57     helper.testmain()
Note: See TracBrowser for help on using the browser.

Hosted by WebFaction

Log in as guest/cpguest to create tickets