It's 2012 all up in here
[mediagoblin.git] / mediagoblin / tests / tools.py
index 420d9ba87b50c3998f5204e26d4558d167aec9fa..7cf355b04ac87fa389ac83c767a74cf2f41156b7 100644 (file)
@@ -1,5 +1,5 @@
 # GNU MediaGoblin -- federated, autonomous media hosting
-# Copyright (C) 2011 MediaGoblin contributors.  See AUTHORS.
+# Copyright (C) 2011, 2012 MediaGoblin contributors.  See AUTHORS.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as published by
@@ -26,6 +26,8 @@ from mediagoblin.tools import testing
 from mediagoblin.init.config import read_mediagoblin_config
 from mediagoblin.decorators import _make_safe
 from mediagoblin.db.open import setup_connection_and_db_from_config
+from mediagoblin.meddleware import BaseMeddleware
+from mediagoblin.auth.lib import bcrypt_gen_password_hash
 
 
 MEDIAGOBLIN_TEST_DB_NAME = u'__mediagoblin_tests__'
@@ -50,9 +52,9 @@ $ CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_tests ./bin/nosetests"""
 class BadCeleryEnviron(Exception): pass
 
 
-class TestingMiddleware(object):
+class TestingMeddleware(BaseMeddleware):
     """
-    Middleware for the Unit tests
+    Meddleware for the Unit tests
     
     It might make sense to perform some tests on all
     requests/responses. Or prepare them in a special
@@ -60,7 +62,7 @@ class TestingMiddleware(object):
     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
+    meddleware list, which means: requests are handed here
     first, responses last. So this wraps up the "normal"
     app.
 
@@ -69,12 +71,6 @@ class TestingMiddleware(object):
     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":
@@ -149,11 +145,11 @@ def get_test_app(dump_old_app=True):
     test_app = loadapp(
         'config:' + TEST_SERVER_CONFIG)
 
-    # Insert the TestingMiddleware, which can do some
+    # Insert the TestingMeddleware, 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))
+    mg_globals.app.meddleware.insert(0, TestingMeddleware(mg_globals.app))
 
     app = TestApp(test_app)
     MGOBLIN_APP = app
@@ -205,3 +201,19 @@ def assert_db_meets_expected(db, expected):
             document = collection.find_one({'_id': expected_document['_id']})
             assert document is not None  # make sure it exists
             assert document == expected_document  # make sure it matches
+
+
+def fixture_add_user(username = u'chris', password = 'toast',
+                     active_user = True):
+    test_user = mg_globals.database.User()
+    test_user.username = username
+    test_user.email = username + u'@example.com'
+    if password is not None:
+        test_user.pw_hash = bcrypt_gen_password_hash(password)
+    if active_user:
+        test_user.email_verified = True
+        test_user.status = u'active'
+
+    test_user.save()
+
+    return test_user