Files
deb-python-pecan/pecan/tests/test_debug.py
2012-03-20 02:07:42 -04:00

48 lines
1.5 KiB
Python

from unittest import TestCase
from webtest import TestApp
from pecan.debug import DebugMiddleware
class TestDebugMiddleware(TestCase):
def setUp(self):
def conditional_error_app(environ, start_response):
if environ['PATH_INFO'] == '/error':
assert 1 == 2
start_response("200 OK", [('Content-type', 'text/plain')])
return ['requested page returned']
self.app = TestApp(DebugMiddleware(conditional_error_app))
def test_middleware_passes_through_when_no_exception_raised(self):
r = self.app.get('/')
assert r.status_int == 200
assert r.body == 'requested page returned'
def test_middleware_gives_stack_trace_on_errors(self):
r = self.app.get('/error', expect_errors=True)
assert r.status_int == 400
assert 'AssertionError' in r.body
def test_middleware_complains_in_multi_process_environment(self):
class MultiProcessApp(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
environ['wsgi.multiprocess'] = True
return self.app(environ, start_response)
def conditional_error_app(environ, start_response):
start_response("200 OK", [('Content-type', 'text/plain')])
return ['Hello, World!']
app = TestApp(MultiProcessApp(DebugMiddleware(conditional_error_app)))
self.assertRaises(
AssertionError,
app.get,
'/'
)