Some docs for the TestingMiddleware
To make the TestingMiddleware actually more useful in the future, start to document it.
This commit is contained in:
parent
91b89bde47
commit
34b0874d9a
@ -15,6 +15,23 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
class TestingMiddleware(object):
|
class TestingMiddleware(object):
|
||||||
|
"""
|
||||||
|
Middleware for the Unit tests
|
||||||
|
|
||||||
|
It might make sense to perform some tests on all
|
||||||
|
requests/responses. Or prepare them in a special
|
||||||
|
manner. For example all html responses could be tested
|
||||||
|
for being valid html *after* being rendered.
|
||||||
|
|
||||||
|
This module is getting inserted at the front of the
|
||||||
|
middleware list, which means: requests are handed here
|
||||||
|
first, responses last. So this wraps up the "normal"
|
||||||
|
app.
|
||||||
|
|
||||||
|
If you need to add a test, either add it directly to
|
||||||
|
the appropiate process_request or process_response, or
|
||||||
|
create a new method and call it from process_*.
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, mg_app):
|
def __init__(self, mg_app):
|
||||||
self.app = mg_app
|
self.app = mg_app
|
||||||
@ -23,12 +40,20 @@ class TestingMiddleware(object):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def process_response(self, request, response):
|
def process_response(self, request, response):
|
||||||
|
# All following tests should be for html only!
|
||||||
if response.content_type != "text/html":
|
if response.content_type != "text/html":
|
||||||
# Get out early
|
# Get out early
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# If the template contains a reference to
|
||||||
|
# /mgoblin_static/ instead of using
|
||||||
|
# /request.staticdirect(), error out here.
|
||||||
|
# This could probably be implemented as a grep on
|
||||||
|
# the shipped templates easier...
|
||||||
if response.text.find("/mgoblin_static/") >= 0:
|
if response.text.find("/mgoblin_static/") >= 0:
|
||||||
raise AssertionError(
|
raise AssertionError(
|
||||||
"Response HTML contains reference to /mgoblin_static/ "
|
"Response HTML contains reference to /mgoblin_static/ "
|
||||||
"instead of staticdirect. Request was for: "
|
"instead of staticdirect. Request was for: "
|
||||||
+ request.full_path)
|
+ request.full_path)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -107,6 +107,8 @@ def get_test_app(dump_old_app=True):
|
|||||||
|
|
||||||
# Insert the TestingMiddleware, which can do some
|
# Insert the TestingMiddleware, which can do some
|
||||||
# sanity checks on every request/response.
|
# sanity checks on every request/response.
|
||||||
|
# Doing it this way is probably not the cleanest way.
|
||||||
|
# We'll fix it, when we have plugins!
|
||||||
mg_globals.app.middleware.insert(0, TestingMiddleware(mg_globals.app))
|
mg_globals.app.middleware.insert(0, TestingMiddleware(mg_globals.app))
|
||||||
|
|
||||||
app = TestApp(test_app)
|
app = TestApp(test_app)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user