NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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!')