aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/tests
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/tests')
-rw-r--r--mediagoblin/tests/__init__.py15
-rw-r--r--mediagoblin/tests/test_auth.py92
-rw-r--r--mediagoblin/tests/test_paste.ini (renamed from mediagoblin/tests/test_server.ini)0
-rw-r--r--mediagoblin/tests/tools.py25
4 files changed, 110 insertions, 22 deletions
diff --git a/mediagoblin/tests/__init__.py b/mediagoblin/tests/__init__.py
index 1f1e23e9..adb6a1b3 100644
--- a/mediagoblin/tests/__init__.py
+++ b/mediagoblin/tests/__init__.py
@@ -16,12 +16,17 @@
from mediagoblin import mg_globals
+from mediagoblin.tests.tools import (
+ MEDIAGOBLIN_TEST_DB_NAME, suicide_if_bad_celery_environ)
+
def setup_package():
- pass
+ suicide_if_bad_celery_environ()
+
def teardown_package():
- if mg_globals.db_connection:
- print "Killing db ..."
- mg_globals.db_connection.drop_database(mg_globals.database.name)
- print "... done"
+ if ((mg_globals.db_connection
+ and mg_globals.database.name == MEDIAGOBLIN_TEST_DB_NAME)):
+ print "Killing db ..."
+ mg_globals.db_connection.drop_database(MEDIAGOBLIN_TEST_DB_NAME)
+ print "... done"
diff --git a/mediagoblin/tests/test_auth.py b/mediagoblin/tests/test_auth.py
index b8389f8d..3a13cbb1 100644
--- a/mediagoblin/tests/test_auth.py
+++ b/mediagoblin/tests/test_auth.py
@@ -242,17 +242,69 @@ def test_authentication_views(test_app):
test_user.save()
# Get login
+ # ---------
test_app.get('/auth/login/')
- # Make sure it rendered with the appropriate template
assert util.TEMPLATE_TEST_CONTEXT.has_key(
'mediagoblin/auth/login.html')
- # Log in as that user
+ # Failed login - blank form
+ # -------------------------
+ util.clear_test_template_context()
+ response = test_app.post('/auth/login/')
+ context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/login.html']
+ form = context['login_form']
+ assert form.username.errors == [u'This field is required.']
+ assert form.password.errors == [u'This field is required.']
+
+ # Failed login - blank user
+ # -------------------------
+ util.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'password': u'toast'})
+ context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/login.html']
+ form = context['login_form']
+ assert form.username.errors == [u'This field is required.']
+
+ # Failed login - blank password
+ # -----------------------------
+ util.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'username': u'chris'})
+ context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/login.html']
+ form = context['login_form']
+ assert form.password.errors == [u'This field is required.']
+
+ # Failed login - bad user
+ # -----------------------
+ util.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'username': u'steve',
+ 'password': 'toast'})
+ context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/login.html']
+ assert context['login_failed']
+
+ # Failed login - bad password
+ # ---------------------------
+ util.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'username': u'chris',
+ 'password': 'jam'})
+ context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/login.html']
+ assert context['login_failed']
+
+ # Successful login
+ # ----------------
util.clear_test_template_context()
response = test_app.post(
'/auth/login/', {
'username': u'chris',
'password': 'toast'})
+
+ # User should be redirected
response.follow()
assert_equal(
urlparse.urlsplit(response.location)[2],
@@ -260,10 +312,38 @@ def test_authentication_views(test_app):
assert util.TEMPLATE_TEST_CONTEXT.has_key(
'mediagoblin/root.html')
- # Make sure we're in the session or something
- session = util.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']['request'].session
+ # Make sure user is in the session
+ context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
+ session = context['request'].session
assert session['user_id'] == unicode(test_user['_id'])
- # Log out as that user
- # Make sure we're not in the session
+ # Successful logout
+ # -----------------
+ util.clear_test_template_context()
+ response = test_app.get('/auth/logout/')
+
+ # Should be redirected to index page
+ response.follow()
+ assert_equal(
+ urlparse.urlsplit(response.location)[2],
+ '/')
+ assert util.TEMPLATE_TEST_CONTEXT.has_key(
+ 'mediagoblin/root.html')
+
+ # Make sure the user is not in the session
+ context = util.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
+ session = context['request'].session
+ assert session.has_key('user_id') == False
+
+ # User is redirected to custom URL if POST['next'] is set
+ # -------------------------------------------------------
+ util.clear_test_template_context()
+ response = test_app.post(
+ '/auth/login/', {
+ 'username': u'chris',
+ 'password': 'toast',
+ 'next' : '/u/chris/'})
+ assert_equal(
+ urlparse.urlsplit(response.location)[2],
+ '/u/chris/')
diff --git a/mediagoblin/tests/test_server.ini b/mediagoblin/tests/test_paste.ini
index 929a1ccf..929a1ccf 100644
--- a/mediagoblin/tests/test_server.ini
+++ b/mediagoblin/tests/test_paste.ini
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index 515bccd4..ebb5f1b5 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -28,9 +28,9 @@ from mediagoblin.decorators import _make_safe
from mediagoblin.db.open import setup_connection_and_db_from_config
-MEDIAGOBLIN_TEST_DB_NAME = '__mediagoblinunittests__'
+MEDIAGOBLIN_TEST_DB_NAME = u'__mediagoblin_tests__'
TEST_SERVER_CONFIG = pkg_resources.resource_filename(
- 'mediagoblin.tests', 'test_server.ini')
+ 'mediagoblin.tests', 'test_paste.ini')
TEST_APP_CONFIG = pkg_resources.resource_filename(
'mediagoblin.tests', 'test_mgoblin_app.ini')
TEST_USER_DEV = pkg_resources.resource_filename(
@@ -42,17 +42,23 @@ USER_DEV_DIRECTORIES_TO_SETUP = [
'media/public', 'media/queue',
'beaker/sessions/data', 'beaker/sessions/lock']
+BAD_CELERY_MESSAGE = """\
+Sorry, you *absolutely* must run nosetests with the
+mediagoblin.celery_setup.from_tests module. Like so:
+$ CELERY_CONFIG_MODULE=mediagoblin.celery_setup.from_tests ./bin/nosetests"""
+
class BadCeleryEnviron(Exception): pass
-def get_test_app(dump_old_app=True):
+def suicide_if_bad_celery_environ():
if not os.environ.get('CELERY_CONFIG_MODULE') == \
'mediagoblin.celery_setup.from_tests':
- raise BadCeleryEnviron(
- u"Sorry, you *absolutely* must run nosetests with the\n"
- u"mediagoblin.celery_setup.from_tests module. Like so:\n"
- u"$ CELERY_CONFIG_MODULE=mediagoblin.celery_setup.from_tests ./bin/nosetests")
+ raise BadCeleryEnviron(BAD_CELERY_MESSAGE)
+
+
+def get_test_app(dump_old_app=True):
+ suicide_if_bad_celery_environ()
global MGOBLIN_APP
global CELERY_SETUP
@@ -78,6 +84,7 @@ def get_test_app(dump_old_app=True):
# @@: For now we're dropping collections, but we could also just
# collection.remove() ?
connection, db = setup_connection_and_db_from_config(app_config)
+ assert db.name == MEDIAGOBLIN_TEST_DB_NAME
collections_to_wipe = [
collection
@@ -87,10 +94,6 @@ def get_test_app(dump_old_app=True):
for collection in collections_to_wipe:
db.drop_collection(collection)
- # Don't need these anymore...
- del(connection)
- del(db)
-
# TODO: Drop and recreate indexes
# setup app and return