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

test_tutorials.py (6404B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\cherrypy\test\test_tutorials.py
      2 import sys
      3 import cherrypy
      4 from cherrypy.test import helper
      5 
      6 class TutorialTest(helper.CPWebCase):
      7 
      8     def setup_server(cls):
      9         conf = cherrypy.config.copy()
     10 
     11         def load_tut_module(name):
     12             cherrypy.config.reset()
     13             cherrypy.config.update(conf)
     14             target = 'cherrypy.tutorial.' + name
     15             if target in sys.modules:
     16                 module = reload(sys.modules[target])
     17             else:
     18                 module = __import__(target, globals(), locals(), [''])
     19             app = cherrypy.tree.apps['']
     20             app.root.load_tut_module = load_tut_module
     21             app.root.sessions = sessions
     22             app.root.traceback_setting = traceback_setting
     23             cls.supervisor.sync_apps()
     24 
     25         load_tut_module.exposed = True
     26 
     27         def sessions():
     28             cherrypy.config.update({'tools.sessions.on': True})
     29 
     30         sessions.exposed = True
     31 
     32         def traceback_setting():
     33             return repr(cherrypy.request.show_tracebacks)
     34 
     35         traceback_setting.exposed = True
     36 
     37         class Dummy:
     38             pass
     39 
     40         root = Dummy()
     41         root.load_tut_module = load_tut_module
     42         cherrypy.tree.mount(root)
     43 
     44     setup_server = classmethod(setup_server)
     45 
     46     def test01HelloWorld(self):
     47         self.getPage('/load_tut_module/tut01_helloworld')
     48         self.getPage('/')
     49         self.assertBody('Hello world!')
     50 
     51     def test02ExposeMethods(self):
     52         self.getPage('/load_tut_module/tut02_expose_methods')
     53         self.getPage('/showMessage')
     54         self.assertBody('Hello world!')
     55 
     56     def test03GetAndPost(self):
     57         self.getPage('/load_tut_module/tut03_get_and_post')
     58         self.getPage('/greetUser?name=Bob')
     59         self.assertBody("Hey Bob, what's up?")
     60         self.getPage('/greetUser')
     61         self.assertBody('Please enter your name <a href="./">here</a>.')
     62         self.getPage('/greetUser?name=')
     63         self.assertBody('No, really, enter your name <a href="./">here</a>.')
     64         self.getPage('/greetUser', method='POST', body='name=Bob')
     65         self.assertBody("Hey Bob, what's up?")
     66         self.getPage('/greetUser', method='POST', body='name=')
     67         self.assertBody('No, really, enter your name <a href="./">here</a>.')
     68 
     69     def test04ComplexSite(self):
     70         self.getPage('/load_tut_module/tut04_complex_site')
     71         msg = '\n            <p>Here are some extra useful links:</p>\n            \n            <ul>\n                <li><a href="http://del.icio.us">del.icio.us</a></li>\n                <li><a href="http://www.mornography.de">Hendrik\'s weblog</a></li>\n            </ul>\n            \n            <p>[<a href="../">Return to links page</a>]</p>'
     72         self.getPage('/links/extra/')
     73         self.assertBody(msg)
     74 
     75     def test05DerivedObjects(self):
     76         self.getPage('/load_tut_module/tut05_derived_objects')
     77         msg = '\n            <html>\n            <head>\n                <title>Another Page</title>\n            <head>\n            <body>\n            <h2>Another Page</h2>\n        \n            <p>\n            And this is the amazing second page!\n            </p>\n        \n            </body>\n            </html>\n        '
     78         self.getPage('/another/')
     79         self.assertBody(msg)
     80 
     81     def test06DefaultMethod(self):
     82         self.getPage('/load_tut_module/tut06_default_method')
     83         self.getPage('/hendrik')
     84         self.assertBody('Hendrik Mans, CherryPy co-developer & crazy German (<a href="./">back</a>)')
     85 
     86     def test07Sessions(self):
     87         self.getPage('/load_tut_module/tut07_sessions')
     88         self.getPage('/sessions')
     89         self.getPage('/')
     90         self.assertBody("\n            During your current session, you've viewed this\n            page 1 times! Your life is a patio of fun!\n        ")
     91         self.getPage('/', self.cookies)
     92         self.assertBody("\n            During your current session, you've viewed this\n            page 2 times! Your life is a patio of fun!\n        ")
     93 
     94     def test08GeneratorsAndYield(self):
     95         self.getPage('/load_tut_module/tut08_generators_and_yield')
     96         self.getPage('/')
     97         self.assertBody('<html><body><h2>Generators rule!</h2><h3>List of users:</h3>Remi<br/>Carlos<br/>Hendrik<br/>Lorenzo Lamas<br/></body></html>')
     98 
     99     def test09Files(self):
    100         self.getPage('/load_tut_module/tut09_files')
    101         filesize = 5
    102         h = [('Content-type', 'multipart/form-data; boundary=x'), ('Content-Length', str(105 + filesize))]
    103         b = '--x\n' + 'Content-Disposition: form-data; name="myFile"; filename="hello.txt"\r\n' + 'Content-Type: text/plain\r\n' + '\r\n' + 'a' * filesize + '\n' + '--x--\n'
    104         self.getPage('/upload', h, 'POST', b)
    105         self.assertBody('<html>\n        <body>\n            myFile length: %d<br />\n            myFile filename: hello.txt<br />\n            myFile mime-type: text/plain\n        </body>\n        </html>' % filesize)
    106         self.getPage('/download')
    107         self.assertStatus('200 OK')
    108         self.assertHeader('Content-Type', 'application/x-download')
    109         self.assertHeader('Content-Disposition', 'attachment; filename="pdf_file.pdf"')
    110         self.assertEqual(len(self.body), 85698)
    111 
    112     def test10HTTPErrors(self):
    113         self.getPage('/load_tut_module/tut10_http_errors')
    114         self.getPage('/')
    115         self.assertInBody('<a href="toggleTracebacks">')
    116         self.assertInBody('<a href="/doesNotExist">')
    117         self.assertInBody('<a href="/error?code=403">')
    118         self.assertInBody('<a href="/error?code=500">')
    119         self.assertInBody('<a href="/messageArg">')
    120         self.getPage('/traceback_setting')
    121         setting = self.body
    122         self.getPage('/toggleTracebacks')
    123         self.assertStatus((302, 303))
    124         self.getPage('/traceback_setting')
    125         self.assertBody(str(not eval(setting)))
    126         self.getPage('/error?code=500')
    127         self.assertStatus(500)
    128         self.assertInBody('The server encountered an unexpected condition which prevented it from fulfilling the request.')
    129         self.getPage('/error?code=403')
    130         self.assertStatus(403)
    131         self.assertInBody("<h2>You can't do that!</h2>")
    132         self.getPage('/messageArg')
    133         self.assertStatus(500)
    134         self.assertInBody("If you construct an HTTPError with a 'message'")