1 from cherrypy.test import test
2 test.prefer_parent_path()
3
4 import cherrypy
5
6
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
87
88 if __name__ == '__main__':
89 setup_server()
90 helper.testmain()
91