1
0
mirror of https://github.com/moparisthebest/SickRage synced 2024-12-15 20:42:25 -05:00
SickRage/cherrypy/test/test_tutorials.py
echel0n cec4ed573d Upgraded CherryPy libs to 3.3.0
Switched out sqlite3 libs in favour of SQLAlchemy v0.9, will gradually migrate dialects and scheme to be fully SQLAlchemy compliant for using there ORM with sessions instead of direct.

Fixed getEpisode function to stop making unrequired scene number conversions on already converted data thats available now from cache.
2014-06-04 18:28:59 -07:00

205 lines
6.9 KiB
Python

import sys
import cherrypy
from cherrypy.test import helper
class TutorialTest(helper.CPWebCase):
def setup_server(cls):
conf = cherrypy.config.copy()
def load_tut_module(name):
"""Import or reload tutorial module as needed."""
cherrypy.config.reset()
cherrypy.config.update(conf)
target = "cherrypy.tutorial." + name
if target in sys.modules:
module = reload(sys.modules[target])
else:
module = __import__(target, globals(), locals(), [''])
# The above import will probably mount a new app at "".
app = cherrypy.tree.apps[""]
app.root.load_tut_module = load_tut_module
app.root.sessions = sessions
app.root.traceback_setting = traceback_setting
cls.supervisor.sync_apps()
load_tut_module.exposed = True
def sessions():
cherrypy.config.update({"tools.sessions.on": True})
sessions.exposed = True
def traceback_setting():
return repr(cherrypy.request.show_tracebacks)
traceback_setting.exposed = True
class Dummy:
pass
root = Dummy()
root.load_tut_module = load_tut_module
cherrypy.tree.mount(root)
setup_server = classmethod(setup_server)
def test01HelloWorld(self):
self.getPage("/load_tut_module/tut01_helloworld")
self.getPage("/")
self.assertBody('Hello world!')
def test02ExposeMethods(self):
self.getPage("/load_tut_module/tut02_expose_methods")
self.getPage("/show_msg")
self.assertBody('Hello world!')
def test03GetAndPost(self):
self.getPage("/load_tut_module/tut03_get_and_post")
# Try different GET queries
self.getPage("/greetUser?name=Bob")
self.assertBody("Hey Bob, what's up?")
self.getPage("/greetUser")
self.assertBody('Please enter your name <a href="./">here</a>.')
self.getPage("/greetUser?name=")
self.assertBody('No, really, enter your name <a href="./">here</a>.')
# Try the same with POST
self.getPage("/greetUser", method="POST", body="name=Bob")
self.assertBody("Hey Bob, what's up?")
self.getPage("/greetUser", method="POST", body="name=")
self.assertBody('No, really, enter your name <a href="./">here</a>.')
def test04ComplexSite(self):
self.getPage("/load_tut_module/tut04_complex_site")
msg = '''
<p>Here are some extra useful links:</p>
<ul>
<li><a href="http://del.icio.us">del.icio.us</a></li>
<li><a href="http://www.cherrypy.org">CherryPy</a></li>
</ul>
<p>[<a href="../">Return to links page</a>]</p>'''
self.getPage("/links/extra/")
self.assertBody(msg)
def test05DerivedObjects(self):
self.getPage("/load_tut_module/tut05_derived_objects")
msg = '''
<html>
<head>
<title>Another Page</title>
<head>
<body>
<h2>Another Page</h2>
<p>
And this is the amazing second page!
</p>
</body>
</html>
'''
# the tutorial has some annoying spaces in otherwise blank lines
msg = msg.replace('</h2>\n\n', '</h2>\n \n')
msg = msg.replace('</p>\n\n', '</p>\n \n')
self.getPage("/another/")
self.assertBody(msg)
def test06DefaultMethod(self):
self.getPage("/load_tut_module/tut06_default_method")
self.getPage('/hendrik')
self.assertBody('Hendrik Mans, CherryPy co-developer & crazy German '
'(<a href="./">back</a>)')
def test07Sessions(self):
self.getPage("/load_tut_module/tut07_sessions")
self.getPage("/sessions")
self.getPage('/')
self.assertBody(
"\n During your current session, you've viewed this"
"\n page 1 times! Your life is a patio of fun!"
"\n ")
self.getPage('/', self.cookies)
self.assertBody(
"\n During your current session, you've viewed this"
"\n page 2 times! Your life is a patio of fun!"
"\n ")
def test08GeneratorsAndYield(self):
self.getPage("/load_tut_module/tut08_generators_and_yield")
self.getPage('/')
self.assertBody('<html><body><h2>Generators rule!</h2>'
'<h3>List of users:</h3>'
'Remi<br/>Carlos<br/>Hendrik<br/>Lorenzo Lamas<br/>'
'</body></html>')
def test09Files(self):
self.getPage("/load_tut_module/tut09_files")
# Test upload
filesize = 5
h = [("Content-type", "multipart/form-data; boundary=x"),
("Content-Length", str(105 + filesize))]
b = ('--x\n'
'Content-Disposition: form-data; name="myFile"; '
'filename="hello.txt"\r\n'
'Content-Type: text/plain\r\n'
'\r\n')
b += 'a' * filesize + '\n' + '--x--\n'
self.getPage('/upload', h, "POST", b)
self.assertBody('''<html>
<body>
myFile length: %d<br />
myFile filename: hello.txt<br />
myFile mime-type: text/plain
</body>
</html>''' % filesize)
# Test download
self.getPage('/download')
self.assertStatus("200 OK")
self.assertHeader("Content-Type", "application/x-download")
self.assertHeader("Content-Disposition",
# Make sure the filename is quoted.
'attachment; filename="pdf_file.pdf"')
self.assertEqual(len(self.body), 85698)
def test10HTTPErrors(self):
self.getPage("/load_tut_module/tut10_http_errors")
self.getPage("/")
self.assertInBody("""<a href="toggleTracebacks">""")
self.assertInBody("""<a href="/doesNotExist">""")
self.assertInBody("""<a href="/error?code=403">""")
self.assertInBody("""<a href="/error?code=500">""")
self.assertInBody("""<a href="/messageArg">""")
self.getPage("/traceback_setting")
setting = self.body
self.getPage("/toggleTracebacks")
self.assertStatus((302, 303))
self.getPage("/traceback_setting")
self.assertBody(str(not eval(setting)))
self.getPage("/error?code=500")
self.assertStatus(500)
self.assertInBody("The server encountered an unexpected condition "
"which prevented it from fulfilling the request.")
self.getPage("/error?code=403")
self.assertStatus(403)
self.assertInBody("<h2>You can't do that!</h2>")
self.getPage("/messageArg")
self.assertStatus(500)
self.assertInBody("If you construct an HTTPError with a 'message'")