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)