aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2011-11-12 13:39:50 +0100
committerElrond <elrond+mediagoblin.org@samba-tng.org>2011-11-12 13:39:50 +0100
commit8daf78db4e3fade3ce131a4580acde5f9bb46a5a (patch)
tree1780134e38c13b5dfbe547769e938c086d175593
parent76dd312ff5618e6dcb4b8f8796648180acae5953 (diff)
parent33d11e995d183f339597715472e4f6ecc81ba557 (diff)
downloadmediagoblin-8daf78db4e3fade3ce131a4580acde5f9bb46a5a.tar.lz
mediagoblin-8daf78db4e3fade3ce131a4580acde5f9bb46a5a.tar.xz
mediagoblin-8daf78db4e3fade3ce131a4580acde5f9bb46a5a.zip
Merge branch 'idea/check_mgoblin_static'
* idea/check_mgoblin_static: Move TestingMiddleware to tests/tools.py Some docs for the TestingMiddleware 591: Let Testing Middleware check for staticdirect() usage
-rw-r--r--mediagoblin/tests/test_mgoblin_app.ini2
-rw-r--r--mediagoblin/tests/test_paste.ini2
-rw-r--r--mediagoblin/tests/tools.py52
3 files changed, 54 insertions, 2 deletions
diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini
index ab32cccc..f979e810 100644
--- a/mediagoblin/tests/test_mgoblin_app.ini
+++ b/mediagoblin/tests/test_mgoblin_app.ini
@@ -1,5 +1,5 @@
[mediagoblin]
-direct_remote_path = /mgoblin_static/
+direct_remote_path = /test_static/
email_sender_address = "notice@mediagoblin.example.org"
email_debug_mode = true
db_name = __mediagoblin_tests__
diff --git a/mediagoblin/tests/test_paste.ini b/mediagoblin/tests/test_paste.ini
index e7574b7a..bd57994b 100644
--- a/mediagoblin/tests/test_paste.ini
+++ b/mediagoblin/tests/test_paste.ini
@@ -5,7 +5,7 @@ debug = true
use = egg:Paste#urlmap
/ = mediagoblin
/mgoblin_media/ = publicstore_serve
-/mgoblin_static/ = mediagoblin_static
+/test_static/ = mediagoblin_static
[app:mediagoblin]
use = egg:mediagoblin#app
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index cf84da14..420d9ba8 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -21,6 +21,7 @@ import os, shutil
from paste.deploy import loadapp
from webtest import TestApp
+from mediagoblin import mg_globals
from mediagoblin.tools import testing
from mediagoblin.init.config import read_mediagoblin_config
from mediagoblin.decorators import _make_safe
@@ -49,6 +50,51 @@ $ CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests ./bin/nosetests"""
class BadCeleryEnviron(Exception): pass
+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
+
+ def process_request(self, request):
+ 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
+
+
def suicide_if_bad_celery_environ():
if not os.environ.get('CELERY_CONFIG_MODULE') == \
'mediagoblin.init.celery.from_tests':
@@ -103,6 +149,12 @@ def get_test_app(dump_old_app=True):
test_app = loadapp(
'config:' + TEST_SERVER_CONFIG)
+ # 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)
MGOBLIN_APP = app