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