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

test_logging.py (3887B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\cherrypy\test\test_logging.py
      2 import os
      3 localDir = os.path.dirname(__file__)
      4 import cherrypy
      5 access_log = os.path.join(localDir, 'access.log')
      6 error_log = os.path.join(localDir, 'error.log')
      7 tartaros = u'\u03a4\u1f71\u03c1\u03c4\u03b1\u03c1\u03bf\u03c2'
      8 erebos = u'\u0388\u03c1\u03b5\u03b2\u03bf\u03c2.com'
      9 
     10 def setup_server():
     11 
     12     class Root:
     13 
     14         def index(self):
     15             return 'hello'
     16 
     17         index.exposed = True
     18 
     19         def uni_code(self):
     20             cherrypy.request.login = tartaros
     21             cherrypy.request.remote.name = erebos
     22 
     23         uni_code.exposed = True
     24 
     25         def slashes(self):
     26             cherrypy.request.request_line = 'GET /slashed\\path HTTP/1.1'
     27 
     28         slashes.exposed = True
     29 
     30         def whitespace(self):
     31             cherrypy.request.headers['User-Agent'] = 'Browzuh (1.0\r\n\t\t.3)'
     32 
     33         whitespace.exposed = True
     34 
     35         def as_string(self):
     36             return 'content'
     37 
     38         as_string.exposed = True
     39 
     40         def as_yield(self):
     41             yield 'content'
     42 
     43         as_yield.exposed = True
     44 
     45         def error(self):
     46             raise ValueError()
     47 
     48         error.exposed = True
     49         error._cp_config = {'tools.log_tracebacks.on': True}
     50 
     51     root = Root()
     52     cherrypy.config.update({'log.error_file': error_log,
     53      'log.access_file': access_log})
     54     cherrypy.tree.mount(root)
     55 
     56 
     57 from cherrypy.test import helper, logtest
     58 
     59 class AccessLogTests(helper.CPWebCase, logtest.LogCase):
     60     setup_server = staticmethod(setup_server)
     61     logfile = access_log
     62 
     63     def testNormalReturn(self):
     64         self.markLog()
     65         self.getPage('/as_string', headers=[('Referer', 'http://www.cherrypy.org/'), ('User-Agent', 'Mozilla/5.0')])
     66         self.assertBody('content')
     67         self.assertStatus(200)
     68         intro = '%s - - [' % self.interface()
     69         self.assertLog(-1, intro)
     70         if [ k for k, v in self.headers if k.lower() == 'content-length' ]:
     71             self.assertLog(-1, '] "GET %s/as_string HTTP/1.1" 200 7 "http://www.cherrypy.org/" "Mozilla/5.0"' % self.prefix())
     72         else:
     73             self.assertLog(-1, '] "GET %s/as_string HTTP/1.1" 200 - "http://www.cherrypy.org/" "Mozilla/5.0"' % self.prefix())
     74 
     75     def testNormalYield(self):
     76         self.markLog()
     77         self.getPage('/as_yield')
     78         self.assertBody('content')
     79         self.assertStatus(200)
     80         intro = '%s - - [' % self.interface()
     81         self.assertLog(-1, intro)
     82         if [ k for k, v in self.headers if k.lower() == 'content-length' ]:
     83             self.assertLog(-1, '] "GET %s/as_yield HTTP/1.1" 200 7 "" ""' % self.prefix())
     84         else:
     85             self.assertLog(-1, '] "GET %s/as_yield HTTP/1.1" 200 - "" ""' % self.prefix())
     86 
     87     def testEscapedOutput(self):
     88         self.markLog()
     89         self.getPage('/uni_code')
     90         self.assertStatus(200)
     91         self.assertLog(-1, repr(tartaros.encode('utf8'))[1:-1])
     92         self.assertLog(-1, '\\xce\\x88\\xcf\\x81\\xce\\xb5\\xce\\xb2\\xce\\xbf\\xcf\\x82')
     93         self.markLog()
     94         self.getPage('/slashes')
     95         self.assertStatus(200)
     96         self.assertLog(-1, '"GET /slashed\\\\path HTTP/1.1"')
     97         self.markLog()
     98         self.getPage('/whitespace')
     99         self.assertStatus(200)
    100         self.assertLog(-1, '"Browzuh (1.0\\r\\n\\t\\t.3)"')
    101 
    102 
    103 class ErrorLogTests(helper.CPWebCase, logtest.LogCase):
    104     setup_server = staticmethod(setup_server)
    105     logfile = error_log
    106 
    107     def testTracebacks(self):
    108         self.markLog()
    109         ignore = helper.webtest.ignored_exceptions
    110         ignore.append(ValueError)
    111         try:
    112             self.getPage('/error')
    113             self.assertInBody('raise ValueError()')
    114             self.assertLog(0, 'HTTP Traceback (most recent call last):')
    115             self.assertLog(-3, 'raise ValueError()')
    116         finally:
    117             ignore.pop()