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

test_config_server.py (3386B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\cherrypy\test\test_config_server.py
      2 import os, sys
      3 localDir = os.path.join(os.getcwd(), os.path.dirname(__file__))
      4 import socket
      5 import time
      6 import cherrypy
      7 from cherrypy.test import helper
      8 
      9 class ServerConfigTests(helper.CPWebCase):
     10 
     11     def setup_server():
     12 
     13         class Root:
     14 
     15             def index(self):
     16                 return cherrypy.request.wsgi_environ['SERVER_PORT']
     17 
     18             index.exposed = True
     19 
     20             def upload(self, file):
     21                 return 'Size: %s' % len(file.file.read())
     22 
     23             upload.exposed = True
     24 
     25             def tinyupload(self):
     26                 return cherrypy.request.body.read()
     27 
     28             tinyupload.exposed = True
     29             tinyupload._cp_config = {'request.body.maxbytes': 100}
     30 
     31         cherrypy.tree.mount(Root())
     32         cherrypy.config.update({'server.socket_host': '0.0.0.0',
     33          'server.socket_port': 9876,
     34          'server.max_request_body_size': 200,
     35          'server.max_request_header_size': 500,
     36          'server.socket_timeout': 0.5,
     37          'server.2.instance': 'cherrypy._cpwsgi_server.CPWSGIServer',
     38          'server.2.socket_port': 9877,
     39          'server.yetanother.socket_port': 9878})
     40 
     41     setup_server = staticmethod(setup_server)
     42     PORT = 9876
     43 
     44     def testBasicConfig(self):
     45         self.getPage('/')
     46         self.assertBody(str(self.PORT))
     47 
     48     def testAdditionalServers(self):
     49         if self.scheme == 'https':
     50             return self.skip('not available under ssl')
     51         self.PORT = 9877
     52         self.getPage('/')
     53         self.assertBody(str(self.PORT))
     54         self.PORT = 9878
     55         self.getPage('/')
     56         self.assertBody(str(self.PORT))
     57 
     58     def testMaxRequestSizePerHandler(self):
     59         if getattr(cherrypy.server, 'using_apache', False):
     60             return self.skip('skipped due to known Apache differences... ')
     61         self.getPage('/tinyupload', method='POST', headers=[('Content-Type', 'text/plain'), ('Content-Length', '100')], body='x' * 100)
     62         self.assertStatus(200)
     63         self.assertBody('x' * 100)
     64         self.getPage('/tinyupload', method='POST', headers=[('Content-Type', 'text/plain'), ('Content-Length', '101')], body='x' * 101)
     65         self.assertStatus(413)
     66 
     67     def testMaxRequestSize(self):
     68         if getattr(cherrypy.server, 'using_apache', False):
     69             return self.skip('skipped due to known Apache differences... ')
     70         for size in (500, 5000, 50000):
     71             self.getPage('/', headers=[('From', 'x' * 500)])
     72             self.assertStatus(413)
     73 
     74         lines256 = 'x' * 248
     75         self.getPage('/', headers=[('Host', '%s:%s' % (self.HOST, self.PORT)), ('From', lines256)])
     76         body = '\r\n'.join(['--x',
     77          'Content-Disposition: form-data; name="file"; filename="hello.txt"',
     78          'Content-Type: text/plain',
     79          '',
     80          '%s',
     81          '--x--'])
     82         partlen = 200 - len(body)
     83         b = body % ('x' * partlen)
     84         h = [('Content-type', 'multipart/form-data; boundary=x'), ('Content-Length', '%s' % len(b))]
     85         self.getPage('/upload', h, 'POST', b)
     86         self.assertBody('Size: %d' % partlen)
     87         b = body % ('x' * 200)
     88         h = [('Content-type', 'multipart/form-data; boundary=x'), ('Content-Length', '%s' % len(b))]
     89         self.getPage('/upload', h, 'POST', b)
     90         self.assertStatus(413)