1 import sys
2
3 import cherrypy
4 from cherrypy.test import helper
5
6
8
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
52
54 self.getPage("/load_tut_module/tut02_expose_methods")
55 self.getPage("/show_msg")
56 self.assertBody('Hello world!')
57
59 self.getPage("/load_tut_module/tut03_get_and_post")
60
61
62 self.getPage("/greetUser?name=Bob")
63 self.assertBody("Hey Bob, what's up?")
64
65 self.getPage("/greetUser")
66 self.assertBody('Please enter your name <a href="./">here</a>.')
67
68 self.getPage("/greetUser?name=")
69 self.assertBody('No, really, enter your name <a href="./">here</a>.')
70
71
72 self.getPage("/greetUser", method="POST", body="name=Bob")
73 self.assertBody("Hey Bob, what's up?")
74
75 self.getPage("/greetUser", method="POST", body="name=")
76 self.assertBody('No, really, enter your name <a href="./">here</a>.')
77
79 self.getPage("/load_tut_module/tut04_complex_site")
80 msg = '''
81 <p>Here are some extra useful links:</p>
82
83 <ul>
84 <li><a href="http://del.icio.us">del.icio.us</a></li>
85 <li><a href="http://www.cherrypy.org">CherryPy</a></li>
86 </ul>
87
88 <p>[<a href="../">Return to links page</a>]</p>'''
89 self.getPage("/links/extra/")
90 self.assertBody(msg)
91
93 self.getPage("/load_tut_module/tut05_derived_objects")
94 msg = '''
95 <html>
96 <head>
97 <title>Another Page</title>
98 <head>
99 <body>
100 <h2>Another Page</h2>
101
102 <p>
103 And this is the amazing second page!
104 </p>
105
106 </body>
107 </html>
108 '''
109
110 msg = msg.replace('</h2>\n\n', '</h2>\n \n')
111 msg = msg.replace('</p>\n\n', '</p>\n \n')
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(
127 "\n During your current session, you've viewed this"
128 "\n page 1 times! Your life is a patio of fun!"
129 "\n ")
130
131 self.getPage('/', self.cookies)
132 self.assertBody(
133 "\n During your current session, you've viewed this"
134 "\n page 2 times! Your life is a patio of fun!"
135 "\n ")
136
138 self.getPage("/load_tut_module/tut08_generators_and_yield")
139 self.getPage('/')
140 self.assertBody('<html><body><h2>Generators rule!</h2>'
141 '<h3>List of users:</h3>'
142 'Remi<br/>Carlos<br/>Hendrik<br/>Lorenzo Lamas<br/>'
143 '</body></html>')
144
146 self.getPage("/load_tut_module/tut09_files")
147
148
149 filesize = 5
150 h = [("Content-type", "multipart/form-data; boundary=x"),
151 ("Content-Length", str(105 + filesize))]
152 b = ('--x\n'
153 'Content-Disposition: form-data; name="myFile"; '
154 'filename="hello.txt"\r\n'
155 'Content-Type: text/plain\r\n'
156 '\r\n')
157 b += 'a' * filesize + '\n' + '--x--\n'
158 self.getPage('/upload', h, "POST", b)
159 self.assertBody('''<html>
160 <body>
161 myFile length: %d<br />
162 myFile filename: hello.txt<br />
163 myFile mime-type: text/plain
164 </body>
165 </html>''' % filesize)
166
167
168 self.getPage('/download')
169 self.assertStatus("200 OK")
170 self.assertHeader("Content-Type", "application/x-download")
171 self.assertHeader("Content-Disposition",
172
173 'attachment; filename="pdf_file.pdf"')
174 self.assertEqual(len(self.body), 85698)
175
205