Package cherrypy :: Package test :: Module test_tutorials
[hide private]
[frames] | no frames]

Source Code for Module cherrypy.test.test_tutorials

  1  import sys 
  2   
  3  import cherrypy 
  4  from cherrypy.test import helper 
  5   
  6   
7 -class TutorialTest(helper.CPWebCase):
8
9 - def setup_server(cls):
10 11 conf = cherrypy.config.copy() 12 13 def load_tut_module(name): 14 """Import or reload tutorial module as needed.""" 15 cherrypy.config.reset() 16 cherrypy.config.update(conf) 17 18 target = "cherrypy.tutorial." + name 19 if target in sys.modules: 20 module = reload(sys.modules[target]) 21 else: 22 module = __import__(target, globals(), locals(), ['']) 23 # The above import will probably mount a new app at "". 24 app = cherrypy.tree.apps[""] 25 26 app.root.load_tut_module = load_tut_module 27 app.root.sessions = sessions 28 app.root.traceback_setting = traceback_setting 29 30 cls.supervisor.sync_apps()
31 load_tut_module.exposed = True 32 33 def sessions(): 34 cherrypy.config.update({"tools.sessions.on": True})
35 sessions.exposed = True 36 37 def traceback_setting(): 38 return repr(cherrypy.request.show_tracebacks) 39 traceback_setting.exposed = True 40 41 class Dummy: 42 pass 43 root = Dummy() 44 root.load_tut_module = load_tut_module 45 cherrypy.tree.mount(root) 46 setup_server = classmethod(setup_server) 47 48
49 - def test01HelloWorld(self):
50 self.getPage("/load_tut_module/tut01_helloworld") 51 self.getPage("/") 52 self.assertBody('Hello world!')
53
54 - def test02ExposeMethods(self):
55 self.getPage("/load_tut_module/tut02_expose_methods") 56 self.getPage("/showMessage") 57 self.assertBody('Hello world!')
58
59 - def test03GetAndPost(self):
60 self.getPage("/load_tut_module/tut03_get_and_post") 61 62 # Try different GET queries 63 self.getPage("/greetUser?name=Bob") 64 self.assertBody("Hey Bob, what's up?") 65 66 self.getPage("/greetUser") 67 self.assertBody('Please enter your name <a href="./">here</a>.') 68 69 self.getPage("/greetUser?name=") 70 self.assertBody('No, really, enter your name <a href="./">here</a>.') 71 72 # Try the same with POST 73 self.getPage("/greetUser", method="POST", body="name=Bob") 74 self.assertBody("Hey Bob, what's up?") 75 76 self.getPage("/greetUser", method="POST", body="name=") 77 self.assertBody('No, really, enter your name <a href="./">here</a>.')
78
79 - def test04ComplexSite(self):
80 self.getPage("/load_tut_module/tut04_complex_site") 81 msg = ''' 82 <p>Here are some extra useful links:</p> 83 84 <ul> 85 <li><a href="http://del.icio.us">del.icio.us</a></li> 86 <li><a href="http://www.mornography.de">Hendrik's weblog</a></li> 87 </ul> 88 89 <p>[<a href="../">Return to links page</a>]</p>''' 90 self.getPage("/links/extra/") 91 self.assertBody(msg)
92
93 - def test05DerivedObjects(self):
94 self.getPage("/load_tut_module/tut05_derived_objects") 95 msg = ''' 96 <html> 97 <head> 98 <title>Another Page</title> 99 <head> 100 <body> 101 <h2>Another Page</h2> 102 103 <p> 104 And this is the amazing second page! 105 </p> 106 107 </body> 108 </html> 109 ''' 110 self.getPage("/another/") 111 self.assertBody(msg)
112
113 - def test06DefaultMethod(self):
114 self.getPage("/load_tut_module/tut06_default_method") 115 self.getPage('/hendrik') 116 self.assertBody('Hendrik Mans, CherryPy co-developer & crazy German ' 117 '(<a href="./">back</a>)')
118
119 - def test07Sessions(self):
120 self.getPage("/load_tut_module/tut07_sessions") 121 self.getPage("/sessions") 122 123 self.getPage('/') 124 self.assertBody("\n During your current session, you've viewed this" 125 "\n page 1 times! Your life is a patio of fun!" 126 "\n ") 127 128 self.getPage('/', self.cookies) 129 self.assertBody("\n During your current session, you've viewed this" 130 "\n page 2 times! Your life is a patio of fun!" 131 "\n ")
132
133 - def test08GeneratorsAndYield(self):
134 self.getPage("/load_tut_module/tut08_generators_and_yield") 135 self.getPage('/') 136 self.assertBody('<html><body><h2>Generators rule!</h2>' 137 '<h3>List of users:</h3>' 138 'Remi<br/>Carlos<br/>Hendrik<br/>Lorenzo Lamas<br/>' 139 '</body></html>')
140
141 - def test09Files(self):
142 self.getPage("/load_tut_module/tut09_files") 143 144 # Test upload 145 filesize = 5 146 h = [("Content-type", "multipart/form-data; boundary=x"), 147 ("Content-Length", str(105 + filesize))] 148 b = '--x\n' + \ 149 'Content-Disposition: form-data; name="myFile"; filename="hello.txt"\r\n' + \ 150 'Content-Type: text/plain\r\n' + \ 151 '\r\n' + \ 152 'a' * filesize + '\n' + \ 153 '--x--\n' 154 self.getPage('/upload', h, "POST", b) 155 self.assertBody('''<html> 156 <body> 157 myFile length: %d<br /> 158 myFile filename: hello.txt<br /> 159 myFile mime-type: text/plain 160 </body> 161 </html>''' % filesize) 162 163 # Test download 164 self.getPage('/download') 165 self.assertStatus("200 OK") 166 self.assertHeader("Content-Type", "application/x-download") 167 self.assertHeader("Content-Disposition", 168 # Make sure the filename is quoted. 169 'attachment; filename="pdf_file.pdf"') 170 self.assertEqual(len(self.body), 85698)
171
172 - def test10HTTPErrors(self):
173 self.getPage("/load_tut_module/tut10_http_errors") 174 175 self.getPage("/") 176 self.assertInBody("""<a href="toggleTracebacks">""") 177 self.assertInBody("""<a href="/doesNotExist">""") 178 self.assertInBody("""<a href="/error?code=403">""") 179 self.assertInBody("""<a href="/error?code=500">""") 180 self.assertInBody("""<a href="/messageArg">""") 181 182 self.getPage("/traceback_setting") 183 setting = self.body 184 self.getPage("/toggleTracebacks") 185 self.assertStatus((302, 303)) 186 self.getPage("/traceback_setting") 187 self.assertBody(str(not eval(setting))) 188 189 self.getPage("/error?code=500") 190 self.assertStatus(500) 191 self.assertInBody("The server encountered an unexpected condition " 192 "which prevented it from fulfilling the request.") 193 194 self.getPage("/error?code=403") 195 self.assertStatus(403) 196 self.assertInBody("<h2>You can't do that!</h2>") 197 198 self.getPage("/messageArg") 199 self.assertStatus(500) 200 self.assertInBody("If you construct an HTTPError with a 'message'")
201