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

test_virtualhost.py (3614B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\cherrypy\test\test_virtualhost.py
      2 import os
      3 curdir = os.path.join(os.getcwd(), os.path.dirname(__file__))
      4 import cherrypy
      5 from cherrypy.test import helper
      6 
      7 class VirtualHostTest(helper.CPWebCase):
      8 
      9     def setup_server():
     10 
     11         class Root:
     12 
     13             def index(self):
     14                 return 'Hello, world'
     15 
     16             index.exposed = True
     17 
     18             def dom4(self):
     19                 return 'Under construction'
     20 
     21             dom4.exposed = True
     22 
     23             def method(self, value):
     24                 return 'You sent %s' % repr(value)
     25 
     26             method.exposed = True
     27 
     28         class VHost:
     29 
     30             def __init__(self, sitename):
     31                 self.sitename = sitename
     32 
     33             def index(self):
     34                 return 'Welcome to %s' % self.sitename
     35 
     36             index.exposed = True
     37 
     38             def vmethod(self, value):
     39                 return 'You sent %s' % repr(value)
     40 
     41             vmethod.exposed = True
     42 
     43             def url(self):
     44                 return cherrypy.url('nextpage')
     45 
     46             url.exposed = True
     47             static = cherrypy.tools.staticdir.handler(section='/static', dir=curdir)
     48 
     49         root = Root()
     50         root.mydom2 = VHost('Domain 2')
     51         root.mydom3 = VHost('Domain 3')
     52         hostmap = {'www.mydom2.com': '/mydom2',
     53          'www.mydom3.com': '/mydom3',
     54          'www.mydom4.com': '/dom4'}
     55         cherrypy.tree.mount(root, config={'/': {'request.dispatch': cherrypy.dispatch.VirtualHost(**hostmap)},
     56          '/mydom2/static2': {'tools.staticdir.on': True,
     57                              'tools.staticdir.root': curdir,
     58                              'tools.staticdir.dir': 'static',
     59                              'tools.staticdir.index': 'index.html'}})
     60 
     61     setup_server = staticmethod(setup_server)
     62 
     63     def testVirtualHost(self):
     64         self.getPage('/', [('Host', 'www.mydom1.com')])
     65         self.assertBody('Hello, world')
     66         self.getPage('/mydom2/', [('Host', 'www.mydom1.com')])
     67         self.assertBody('Welcome to Domain 2')
     68         self.getPage('/', [('Host', 'www.mydom2.com')])
     69         self.assertBody('Welcome to Domain 2')
     70         self.getPage('/', [('Host', 'www.mydom3.com')])
     71         self.assertBody('Welcome to Domain 3')
     72         self.getPage('/', [('Host', 'www.mydom4.com')])
     73         self.assertBody('Under construction')
     74         self.getPage('/method?value=root')
     75         self.assertBody("You sent u'root'")
     76         self.getPage('/vmethod?value=dom2+GET', [('Host', 'www.mydom2.com')])
     77         self.assertBody("You sent u'dom2 GET'")
     78         self.getPage('/vmethod', [('Host', 'www.mydom3.com')], method='POST', body='value=dom3+POST')
     79         self.assertBody("You sent u'dom3 POST'")
     80         self.getPage('/vmethod/pos', [('Host', 'www.mydom3.com')])
     81         self.assertBody("You sent 'pos'")
     82         self.getPage('/url', [('Host', 'www.mydom2.com')])
     83         self.assertBody('%s://www.mydom2.com/nextpage' % self.scheme)
     84 
     85     def test_VHost_plus_Static(self):
     86         self.getPage('/static/style.css', [('Host', 'www.mydom2.com')])
     87         self.assertStatus('200 OK')
     88         self.assertHeader('Content-Type', 'text/css;charset=utf-8')
     89         self.getPage('/static2/dirback.jpg', [('Host', 'www.mydom2.com')])
     90         self.assertStatus('200 OK')
     91         self.assertHeader('Content-Type', 'image/jpeg')
     92         self.getPage('/static2/', [('Host', 'www.mydom2.com')])
     93         self.assertStatus('200 OK')
     94         self.assertBody('Hello, world\r\n')
     95         self.getPage('/static2', [('Host', 'www.mydom2.com')])
     96         self.assertStatus(301)