Home | Trees | Indices | Help |
|
---|
|
1 from cherrypy._cpcompat import ntob 2 from cherrypy.test import helper 3 4630 31 32 class WSGIResponse(object): 33 34 def __init__(self, appresults): 35 self.appresults = appresults 36 self.iter = iter(appresults) 37 38 def __iter__(self): 39 return self 40 41 def next(self): 42 return self.iter.next() 43 def __next__(self): 44 return next(self.iter) 45 46 def close(self): 47 if hasattr(self.appresults, "close"): 48 self.appresults.close() 49 50 51 class ReversingMiddleware(object): 52 53 def __init__(self, app): 54 self.app = app 55 56 def __call__(self, environ, start_response): 57 results = app(environ, start_response) 58 class Reverser(WSGIResponse): 59 def next(this): 60 line = list(this.iter.next()) 61 line.reverse() 62 return "".join(line) 63 def __next__(this): 64 line = list(next(this.iter)) 65 line.reverse() 66 return bytes(line) 67 return Reverser(results) 68 69 class Root: 70 def index(self): 71 return ntob("I'm a regular CherryPy page handler!") 72 index.exposed = True 73 74 75 cherrypy.tree.mount(Root()) 76 77 cherrypy.tree.graft(test_app, '/hosted/app1') 78 cherrypy.tree.graft(test_empty_string_app, '/hosted/app3') 79 80 # Set script_name explicitly to None to signal CP that it should 81 # be pulled from the WSGI environ each time. 82 app = cherrypy.Application(Root(), script_name=None) 83 cherrypy.tree.graft(ReversingMiddleware(app), '/hosted/app2') 84 setup_server = staticmethod(setup_server) 85 86 wsgi_output = '''Hello, world! 87 This is a wsgi app running within CherryPy!''' 88 928 import os 9 curdir = os.path.join(os.getcwd(), os.path.dirname(__file__)) 10 11 import cherrypy 12 13 def test_app(environ, start_response): 14 status = '200 OK' 15 response_headers = [('Content-type', 'text/plain')] 16 start_response(status, response_headers) 17 output = ['Hello, world!\n', 18 'This is a wsgi app running within CherryPy!\n\n'] 19 keys = list(environ.keys()) 20 keys.sort() 21 for k in keys: 22 output.append('%s: %s\n' % (k,environ[k])) 23 return [ntob(x, 'utf-8') for x in output]24 25 def test_empty_string_app(environ, start_response): 26 status = '200 OK' 27 response_headers = [('Content-type', 'text/plain')] 28 start_response(status, response_headers) 29 return [ntob('Hello'), ntob(''), ntob(' '), ntob(''), ntob('world')]94 import cherrypy 95 if not cherrypy.server.using_wsgi: 96 return self.skip("skipped (not using WSGI)... ") 97 self.getPage("/hosted/app1") 98 self.assertHeader("Content-Type", "text/plain") 99 self.assertInBody(self.wsgi_output)100102 import cherrypy 103 if not cherrypy.server.using_wsgi: 104 return self.skip("skipped (not using WSGI)... ") 105 self.getPage("/hosted/app2/") 106 body = list("I'm a regular CherryPy page handler!") 107 body.reverse() 108 body = "".join(body) 109 self.assertInBody(body)110112 import cherrypy 113 if not cherrypy.server.using_wsgi: 114 return self.skip("skipped (not using WSGI)... ") 115 self.getPage("/hosted/app3") 116 self.assertHeader("Content-Type", "text/plain") 117 self.assertInBody('Hello world')118
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Fri Sep 20 20:31:11 2013 | http://epydoc.sourceforge.net |