summaryrefslogtreecommitdiff
path: root/tests/test_errordocument.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_errordocument.py')
-rw-r--r--tests/test_errordocument.py64
1 files changed, 46 insertions, 18 deletions
diff --git a/tests/test_errordocument.py b/tests/test_errordocument.py
index 502b44d..57a01ab 100644
--- a/tests/test_errordocument.py
+++ b/tests/test_errordocument.py
@@ -1,21 +1,6 @@
-"""
-Error Document Support Test
-+++++++++++++++++++++++++++
-
-WARNING: These tests aren't yet finished. A call to test_ok() using
-not_found_app rather than simple_app currently fails complaining of
-start_response not having been called before content is returned.
-
-This isn't the full story since start_response will have been called
-by the original response but I need advice on how to modify the
-test suite to be able to test this.
-
-I also need to find out how to test that another response was
-correctly requested by the middleware.
-"""
-import os
-from paste.errordocument import forward, custom_forward
+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')])
@@ -26,8 +11,51 @@ def not_found_app(environ, start_response):
return ['requested page returned']
def test_ok():
- app = TestApp(forward(simple_app, codes={404:'/error'}))
+ 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
+