Some docs for the TestingMiddleware
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 30 Oct 2011 19:51:55 +0000 (20:51 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Sat, 12 Nov 2011 12:10:48 +0000 (13:10 +0100)
To make the TestingMiddleware actually more useful in the
future, start to document it.

mediagoblin/middleware/testing.py
mediagoblin/tests/tools.py

index 06714769f00f903423425514210f681b8440ec64..993226610997de8bc3c08debc5a99e951aa26a6c 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 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):
         self.app = mg_app
@@ -23,12 +40,20 @@ class TestingMiddleware(object):
         pass
 
     def process_response(self, request, response):
+        # All following tests should be for html only!
         if response.content_type != "text/html":
             # Get out early
             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:
             raise AssertionError(
                 "Response HTML contains reference to /mgoblin_static/ "
                 "instead of staticdirect. Request was for: "
                 + request.full_path)
+
         return
index e8558240ab0cde0fc17ab02a43803c8b75b33dea..7f20f6e7f7c589c670b052d295aacf65a85ec4e1 100644 (file)
@@ -107,6 +107,8 @@ def get_test_app(dump_old_app=True):
 
     # Insert the TestingMiddleware, which can do some
     # 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))
 
     app = TestApp(test_app)