test_wsgi_ns.py (2433B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\cherrypy\test\test_wsgi_ns.py 2 import cherrypy 3 from cherrypy.test import helper 4 5 class WSGI_Namespace_Test(helper.CPWebCase): 6 7 def setup_server(): 8 9 class WSGIResponse(object): 10 11 def __init__(self, appresults): 12 self.appresults = appresults 13 self.iter = iter(appresults) 14 15 def __iter__(self): 16 return self 17 18 def next(self): 19 return self.iter.next() 20 21 def close(self): 22 if hasattr(self.appresults, 'close'): 23 self.appresults.close() 24 25 class ChangeCase(object): 26 27 def __init__(self, app, to = None): 28 self.app = app 29 self.to = to 30 31 def __call__(self, environ, start_response): 32 res = self.app(environ, start_response) 33 34 class CaseResults(WSGIResponse): 35 36 def next(this): 37 return getattr(this.iter.next(), self.to)() 38 39 return CaseResults(res) 40 41 class Replacer(object): 42 43 def __init__(self, app, map = {}): 44 self.app = app 45 self.map = map 46 47 def __call__(self, environ, start_response): 48 res = self.app(environ, start_response) 49 50 class ReplaceResults(WSGIResponse): 51 52 def next(this): 53 line = this.iter.next() 54 for k, v in self.map.iteritems(): 55 line = line.replace(k, v) 56 57 return line 58 59 return ReplaceResults(res) 60 61 class Root(object): 62 63 def index(self): 64 return 'HellO WoRlD!' 65 66 index.exposed = True 67 68 root_conf = {'wsgi.pipeline': [('replace', Replacer)], 69 'wsgi.replace.map': {'L': 'X', 70 'l': 'r'}} 71 app = cherrypy.Application(Root()) 72 app.wsgiapp.pipeline.append(('changecase', ChangeCase)) 73 app.wsgiapp.config['changecase'] = {'to': 'upper'} 74 cherrypy.tree.mount(app, config={'/': root_conf}) 75 76 setup_server = staticmethod(setup_server) 77 78 def test_pipeline(self): 79 if not cherrypy.server.httpserver: 80 return self.skip() 81 self.getPage('/') 82 self.assertBody('HERRO WORRD!')