Removed spurious static_path.
[smonitor.git] / monitor / cherrypy / test / test_wsgiapps.py
blobfa5420c5e53a142c582cff1c0289a50772e72075
1 from cherrypy.test import helper
4 class WSGIGraftTests(helper.CPWebCase):
6 def setup_server():
7 import os
8 curdir = os.path.join(os.getcwd(), os.path.dirname(__file__))
10 import cherrypy
12 def test_app(environ, start_response):
13 status = '200 OK'
14 response_headers = [('Content-type', 'text/plain')]
15 start_response(status, response_headers)
16 output = ['Hello, world!\n',
17 'This is a wsgi app running within CherryPy!\n\n']
18 keys = list(environ.keys())
19 keys.sort()
20 for k in keys:
21 output.append('%s: %s\n' % (k,environ[k]))
22 return output
24 def test_empty_string_app(environ, start_response):
25 status = '200 OK'
26 response_headers = [('Content-type', 'text/plain')]
27 start_response(status, response_headers)
28 return ['Hello', '', ' ', '', 'world']
31 class WSGIResponse(object):
33 def __init__(self, appresults):
34 self.appresults = appresults
35 self.iter = iter(appresults)
37 def __iter__(self):
38 return self
40 def next(self):
41 return self.iter.next()
43 def close(self):
44 if hasattr(self.appresults, "close"):
45 self.appresults.close()
48 class ReversingMiddleware(object):
50 def __init__(self, app):
51 self.app = app
53 def __call__(self, environ, start_response):
54 results = app(environ, start_response)
55 class Reverser(WSGIResponse):
56 def next(this):
57 line = list(this.iter.next())
58 line.reverse()
59 return "".join(line)
60 return Reverser(results)
62 class Root:
63 def index(self):
64 return "I'm a regular CherryPy page handler!"
65 index.exposed = True
68 cherrypy.tree.mount(Root())
70 cherrypy.tree.graft(test_app, '/hosted/app1')
71 cherrypy.tree.graft(test_empty_string_app, '/hosted/app3')
73 # Set script_name explicitly to None to signal CP that it should
74 # be pulled from the WSGI environ each time.
75 app = cherrypy.Application(Root(), script_name=None)
76 cherrypy.tree.graft(ReversingMiddleware(app), '/hosted/app2')
77 setup_server = staticmethod(setup_server)
79 wsgi_output = '''Hello, world!
80 This is a wsgi app running within CherryPy!'''
82 def test_01_standard_app(self):
83 self.getPage("/")
84 self.assertBody("I'm a regular CherryPy page handler!")
86 def test_04_pure_wsgi(self):
87 import cherrypy
88 if not cherrypy.server.using_wsgi:
89 return self.skip("skipped (not using WSGI)... ")
90 self.getPage("/hosted/app1")
91 self.assertHeader("Content-Type", "text/plain")
92 self.assertInBody(self.wsgi_output)
94 def test_05_wrapped_cp_app(self):
95 import cherrypy
96 if not cherrypy.server.using_wsgi:
97 return self.skip("skipped (not using WSGI)... ")
98 self.getPage("/hosted/app2/")
99 body = list("I'm a regular CherryPy page handler!")
100 body.reverse()
101 body = "".join(body)
102 self.assertInBody(body)
104 def test_06_empty_string_app(self):
105 import cherrypy
106 if not cherrypy.server.using_wsgi:
107 return self.skip("skipped (not using WSGI)... ")
108 self.getPage("/hosted/app3")
109 self.assertHeader("Content-Type", "text/plain")
110 self.assertInBody('Hello world')