1 from cherrypy.test import test
2 test.prefer_parent_path()
3
4 import sys
5
6 import cherrypy
7 from cherrypy.test import helper
8
9
32 load_tut_module.exposed = True
33
34 def sessions():
35 cherrypy.config.update({"tools.sessions.on": True})
36 sessions.exposed = True
37
38 def traceback_setting():
39 return repr(cherrypy.request.show_tracebacks)
40 traceback_setting.exposed = True
41
42 class Dummy:
43 pass
44 root = Dummy()
45 root.load_tut_module = load_tut_module
46 cherrypy.tree.mount(root)
47
48
50
55
57 self.getPage("/load_tut_module/tut02_expose_methods")
58 self.getPage("/showMessage")
59 self.assertBody('Hello world!')
60
62 self.getPage("/load_tut_module/tut03_get_and_post")
63
64
65 self.getPage("/greetUser?name=Bob")
66 self.assertBody("Hey Bob, what's up?")
67
68 self.getPage("/greetUser")
69 self.assertBody('Please enter your name <a href="./">here</a>.')
70
71 self.getPage("/greetUser?name=")
72 self.assertBody('No, really, enter your name <a href="./">here</a>.')
73
74
75 self.getPage("/greetUser", method="POST", body="name=Bob")
76 self.assertBody("Hey Bob, what's up?")
77
78 self.getPage("/greetUser", method="POST", body="name=")
79 self.assertBody('No, really, enter your name <a href="./">here</a>.')
80
82 self.getPage("/load_tut_module/tut04_complex_site")
83 msg = '''
84 <p>Here are some extra useful links:</p>
85
86 <ul>
87 <li><a href="http://del.icio.us">del.icio.us</a></li>
88 <li><a href="http://www.mornography.de">Hendrik's weblog</a></li>
89 </ul>
90
91 <p>[<a href="../">Return to links page</a>]</p>'''
92 self.getPage("/links/extra/")
93 self.assertBody(msg)
94
96 self.getPage("/load_tut_module/tut05_derived_objects")
97 msg = '''
98 <html>
99 <head>
100 <title>Another Page</title>
101 <head>
102 <body>
103 <h2>Another Page</h2>
104
105 <p>
106 And this is the amazing second page!
107 </p>
108
109 </body>
110 </html>
111 '''
112 self.getPage("/another/")
113 self.assertBody(msg)
114
116 self.getPage("/load_tut_module/tut06_default_method")
117 self.getPage('/hendrik')
118 self.assertBody('Hendrik Mans, CherryPy co-developer & crazy German '
119 '(<a href="./">back</a>)')
120
122 self.getPage("/load_tut_module/tut07_sessions")
123 self.getPage("/sessions")
124
125 self.getPage('/')
126 self.assertBody("\n During your current session, you've viewed this"
127 "\n page 1 times! Your life is a patio of fun!"
128 "\n ")
129
130 self.getPage('/', self.cookies)
131 self.assertBody("\n During your current session, you've viewed this"
132 "\n page 2 times! Your life is a patio of fun!"
133 "\n ")
134
136 self.getPage("/load_tut_module/tut08_generators_and_yield")
137 self.getPage('/')
138 self.assertBody('<html><body><h2>Generators rule!</h2>'
139 '<h3>List of users:</h3>'
140 'Remi<br/>Carlos<br/>Hendrik<br/>Lorenzo Lamas<br/>'
141 '</body></html>')
142
144 self.getPage("/load_tut_module/tut09_files")
145
146
147 filesize = 5
148 h = [("Content-type", "multipart/form-data; boundary=x"),
149 ("Content-Length", str(105 + filesize))]
150 b = """--x
151 Content-Disposition: form-data; name="myFile"; filename="hello.txt"
152 Content-Type: text/plain
153
154 %s
155 --x--
156 """ % ("a" * filesize)
157 self.getPage('/upload', h, "POST", b)
158 self.assertBody('''<html>
159 <body>
160 myFile length: %d<br />
161 myFile filename: hello.txt<br />
162 myFile mime-type: text/plain
163 </body>
164 </html>''' % filesize)
165
166
167 self.getPage('/download')
168 self.assertStatus("200 OK")
169 self.assertHeader("Content-Type", "application/x-download")
170 self.assertHeader("Content-Disposition",
171
172 'attachment; filename="pdf_file.pdf"')
173 self.assertEqual(len(self.body), 85698)
174
204
205
206 if __name__ == "__main__":
207 conf = {'server.socket_host': '127.0.0.1',
208 'server.socket_port': 8080,
209 'server.thread_pool': 10,
210 'environment': "test_suite",
211 }
212 cherrypy.config.update(conf)
213 setup_server()
214 helper.testmain()
215