diff options
author | matt <matt@xcolour.net> | 2013-01-28 11:32:18 -0500 |
---|---|---|
committer | matt <matt@xcolour.net> | 2013-01-28 11:32:18 -0500 |
commit | 1afcb52d73271bbbd78f885451aa1b0e78c09871 (patch) | |
tree | 9145840d6036fcbc0b6647c88f679a567fa8c54d /tests/test_errordocument.py | |
download | paste-git-stringio.tar.gz |
Import StringIO so it can be used.stringio
Diffstat (limited to 'tests/test_errordocument.py')
-rw-r--r-- | tests/test_errordocument.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/tests/test_errordocument.py b/tests/test_errordocument.py new file mode 100644 index 0000000..24f3022 --- /dev/null +++ b/tests/test_errordocument.py @@ -0,0 +1,92 @@ +from paste.errordocument import forward +from paste.fixture import * +from paste.recursive import RecursiveMiddleware + +def simple_app(environ, start_response): + start_response("200 OK", [('Content-type', 'text/plain')]) + return ['requested page returned'] + +def not_found_app(environ, start_response): + start_response("404 Not found", [('Content-type', 'text/plain')]) + return ['requested page returned'] + +def test_ok(): + app = TestApp(simple_app) + res = app.get('') + assert res.header('content-type') == 'text/plain' + assert res.full_status == '200 OK' + assert 'requested page returned' in res + +def error_docs_app(environ, start_response): + if environ['PATH_INFO'] == '/not_found': + start_response("404 Not found", [('Content-type', 'text/plain')]) + return ['Not found'] + elif environ['PATH_INFO'] == '/error': + start_response("200 OK", [('Content-type', 'text/plain')]) + return ['Page not found'] + else: + return simple_app(environ, start_response) + +def test_error_docs_app(): + app = TestApp(error_docs_app) + res = app.get('') + assert res.header('content-type') == 'text/plain' + assert res.full_status == '200 OK' + assert 'requested page returned' in res + res = app.get('/error') + assert res.header('content-type') == 'text/plain' + assert res.full_status == '200 OK' + assert 'Page not found' in res + res = app.get('/not_found', status=404) + assert res.header('content-type') == 'text/plain' + assert res.full_status == '404 Not found' + assert 'Not found' in res + +def test_forward(): + app = forward(error_docs_app, codes={404:'/error'}) + app = TestApp(RecursiveMiddleware(app)) + res = app.get('') + assert res.header('content-type') == 'text/plain' + assert res.full_status == '200 OK' + assert 'requested page returned' in res + res = app.get('/error') + assert res.header('content-type') == 'text/plain' + assert res.full_status == '200 OK' + assert 'Page not found' in res + res = app.get('/not_found', status=404) + assert res.header('content-type') == 'text/plain' + assert res.full_status == '404 Not found' + # Note changed response + assert 'Page not found' in res + +def auth_required_app(environ, start_response): + start_response('401 Unauthorized', [('content-type', 'text/plain'), ('www-authenticate', 'Basic realm="Foo"')]) + return ['Sign in!'] + +def auth_docs_app(environ, start_response): + if environ['PATH_INFO'] == '/auth': + return auth_required_app(environ, start_response) + elif environ['PATH_INFO'] == '/auth_doc': + start_response("200 OK", [('Content-type', 'text/html')]) + return ['<html>Login!</html>'] + else: + return simple_app(environ, start_response) + +def test_auth_docs_app(): + wsgi_app = forward(auth_docs_app, codes={401: '/auth_doc'}) + app = TestApp(wsgi_app) + res = app.get('/auth_doc') + assert res.header('content-type') == 'text/html' + res = app.get('/auth', status=401) + assert res.header('content-type') == 'text/html' + assert res.header('www-authenticate') == 'Basic realm="Foo"' + assert res.body == '<html>Login!</html>' + +def test_bad_error(): + def app(environ, start_response): + start_response('404 Not Found', [('content-type', 'text/plain')]) + return ['not found'] + app = forward(app, {404: '/404.html'}) + app = TestApp(app) + resp = app.get('/test', expect_errors=True) + print resp |