Package cherrypy :: Package test :: Module test_wsgi_ns
[hide private]
[frames] | no frames]

Source Code for Module cherrypy.test.test_wsgi_ns

 1  from cherrypy.test import test 
 2  test.prefer_parent_path() 
 3   
 4  import cherrypy 
 5   
 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 26 class ChangeCase(object): 27 28 def __init__(self, app, to=None): 29 self.app = app 30 self.to = to 31 32 def __call__(self, environ, start_response): 33 res = self.app(environ, start_response) 34 class CaseResults(WSGIResponse): 35 def next(this): 36 return getattr(this.iter.next(), self.to)() 37 return CaseResults(res) 38 39 class Replacer(object): 40 41 def __init__(self, app, map={}): 42 self.app = app 43 self.map = map 44 45 def __call__(self, environ, start_response): 46 res = self.app(environ, start_response) 47 class ReplaceResults(WSGIResponse): 48 def next(this): 49 line = this.iter.next() 50 for k, v in self.map.iteritems(): 51 line = line.replace(k, v) 52 return line 53 return ReplaceResults(res) 54 55 class Root(object): 56 57 def index(self): 58 return "HellO WoRlD!" 59 index.exposed = True 60 61 62 root_conf = {'wsgi.pipeline': [('replace', Replacer)], 63 'wsgi.replace.map': {'L': 'X', 'l': 'r'}, 64 } 65 66 cherrypy.config.update({'environment': 'test_suite'}) 67 68 app = cherrypy.Application(Root()) 69 app.wsgiapp.pipeline.append(('changecase', ChangeCase)) 70 app.wsgiapp.config['changecase'] = {'to': 'upper'} 71 cherrypy.tree.mount(app, config={'/': root_conf}) 72 73 74 from cherrypy.test import helper 75 76
77 -class WSGI_Namespace_Test(helper.CPWebCase):
78
79 - def test_pipeline(self):
80 if not cherrypy.server.httpserver: 81 print "skipped ", 82 return 83 84 self.getPage("/") 85 # If body is "HEXXO WORXD!", the middleware was applied out of order. 86 self.assertBody("HERRO WORRD!")
87 88 if __name__ == '__main__': 89 setup_server() 90 helper.testmain() 91