aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/tests
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/tests')
-rw-r--r--mediagoblin/tests/test_auth.py40
-rw-r--r--mediagoblin/tests/test_edit.py29
-rw-r--r--mediagoblin/tests/test_mgoblin_app.ini1
-rw-r--r--mediagoblin/tests/test_misc.py26
-rw-r--r--mediagoblin/tests/test_submission.py16
-rw-r--r--mediagoblin/tests/test_tags.py9
-rw-r--r--mediagoblin/tests/test_tests.py6
-rw-r--r--mediagoblin/tests/tools.py17
8 files changed, 78 insertions, 66 deletions
diff --git a/mediagoblin/tests/test_auth.py b/mediagoblin/tests/test_auth.py
index 153c6e53..d3b8caf1 100644
--- a/mediagoblin/tests/test_auth.py
+++ b/mediagoblin/tests/test_auth.py
@@ -20,7 +20,7 @@ import datetime
from nose.tools import assert_equal
from mediagoblin.auth import lib as auth_lib
-from mediagoblin.tests.tools import setup_fresh_app
+from mediagoblin.tests.tools import setup_fresh_app, fixture_add_user
from mediagoblin import mg_globals
from mediagoblin.tools import template, mail
@@ -162,8 +162,8 @@ def test_register_views(test_app):
new_user = mg_globals.database.User.find_one(
{'username': 'happygirl'})
assert new_user
- assert new_user['status'] == u'needs_email_verification'
- assert new_user['email_verified'] == False
+ assert new_user.status == u'needs_email_verification'
+ assert new_user.email_verified == False
## Make sure user is logged in
request = template.TEMPLATE_TEST_CONTEXT[
@@ -187,7 +187,7 @@ def test_register_views(test_app):
assert parsed_get_params['userid'] == [
unicode(new_user._id)]
assert parsed_get_params['token'] == [
- new_user['verification_key']]
+ new_user.verification_key]
## Try verifying with bs verification key, shouldn't work
template.clear_test_template_context()
@@ -202,8 +202,8 @@ def test_register_views(test_app):
new_user = mg_globals.database.User.find_one(
{'username': 'happygirl'})
assert new_user
- assert new_user['status'] == u'needs_email_verification'
- assert new_user['email_verified'] == False
+ assert new_user.status == u'needs_email_verification'
+ assert new_user.email_verified == False
## Verify the email activation works
template.clear_test_template_context()
@@ -216,8 +216,8 @@ def test_register_views(test_app):
new_user = mg_globals.database.User.find_one(
{'username': 'happygirl'})
assert new_user
- assert new_user['status'] == u'active'
- assert new_user['email_verified'] == True
+ assert new_user.status == u'active'
+ assert new_user.email_verified == True
# Uniqueness checks
# -----------------
@@ -270,27 +270,27 @@ def test_register_views(test_app):
# user should have matching parameters
new_user = mg_globals.database.User.find_one({'username': 'happygirl'})
assert parsed_get_params['userid'] == [unicode(new_user._id)]
- assert parsed_get_params['token'] == [new_user['fp_verification_key']]
+ assert parsed_get_params['token'] == [new_user.fp_verification_key]
### The forgotten password token should be set to expire in ~ 10 days
# A few ticks have expired so there are only 9 full days left...
- assert (new_user['fp_token_expire'] - datetime.datetime.now()).days == 9
+ assert (new_user.fp_token_expire - datetime.datetime.now()).days == 9
## Try using a bs password-changing verification key, shouldn't work
template.clear_test_template_context()
response = test_app.get(
"/auth/forgot_password/verify/?userid=%s&token=total_bs" % unicode(
- new_user._id), status=400)
- assert response.status == '400 Bad Request'
+ new_user._id), status=404)
+ assert_equal(response.status, '404 Not Found')
## Try using an expired token to change password, shouldn't work
template.clear_test_template_context()
- real_token_expiration = new_user['fp_token_expire']
- new_user['fp_token_expire'] = datetime.datetime.now()
+ real_token_expiration = new_user.fp_token_expire
+ new_user.fp_token_expire = datetime.datetime.now()
new_user.save()
- response = test_app.get("%s?%s" % (path, get_params), status=400)
- assert response.status == '400 Bad Request'
- new_user['fp_token_expire'] = real_token_expiration
+ response = test_app.get("%s?%s" % (path, get_params), status=404)
+ assert_equal(response.status, '404 Not Found')
+ new_user.fp_token_expire = real_token_expiration
new_user.save()
## Verify step 1 of password-change works -- can see form to change password
@@ -332,11 +332,7 @@ def test_authentication_views(test_app):
Test logging in and logging out
"""
# Make a new user
- test_user = mg_globals.database.User()
- test_user['username'] = u'chris'
- test_user['email'] = u'chris@example.com'
- test_user['pw_hash'] = auth_lib.bcrypt_gen_password_hash('toast')
- test_user.save()
+ test_user = fixture_add_user(active_user=False)
# Get login
# ---------
diff --git a/mediagoblin/tests/test_edit.py b/mediagoblin/tests/test_edit.py
index 3637b046..0cf71e9b 100644
--- a/mediagoblin/tests/test_edit.py
+++ b/mediagoblin/tests/test_edit.py
@@ -15,23 +15,16 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from mediagoblin import mg_globals
-from mediagoblin.tests.tools import setup_fresh_app
+from mediagoblin.tests.tools import setup_fresh_app, fixture_add_user
from mediagoblin.tools import template
-from mediagoblin.auth.lib import bcrypt_check_password, \
- bcrypt_gen_password_hash
+from mediagoblin.auth.lib import bcrypt_check_password
@setup_fresh_app
def test_change_password(test_app):
"""Test changing password correctly and incorrectly"""
# set up new user
- test_user = mg_globals.database.User()
- test_user['username'] = u'chris'
- test_user['email'] = u'chris@example.com'
- test_user['email_verified'] = True
- test_user['status'] = u'active'
- test_user['pw_hash'] = bcrypt_gen_password_hash('toast')
- test_user.save()
+ test_user = fixture_add_user()
test_app.post(
'/auth/login/', {
@@ -51,7 +44,7 @@ def test_change_password(test_app):
# test_user has to be fetched again in order to have the current values
test_user = mg_globals.database.User.one({'username': 'chris'})
- assert bcrypt_check_password('123456', test_user['pw_hash'])
+ assert bcrypt_check_password('123456', test_user.pw_hash)
# test that the password cannot be changed if the given old_password
# is wrong
@@ -66,20 +59,14 @@ def test_change_password(test_app):
test_user = mg_globals.database.User.one({'username': 'chris'})
- assert not bcrypt_check_password('098765', test_user['pw_hash'])
+ assert not bcrypt_check_password('098765', test_user.pw_hash)
@setup_fresh_app
def change_bio_url(test_app):
"""Test changing bio and URL"""
# set up new user
- test_user = mg_globals.database.User()
- test_user['username'] = u'chris'
- test_user['email'] = u'chris@example.com'
- test_user['email_verified'] = True
- test_user['status'] = u'active'
- test_user['pw_hash'] = bcrypt_gen_password_hash('toast')
- test_user.save()
+ test_user = fixture_add_user()
# test changing the bio and the URL properly
test_app.post(
@@ -89,8 +76,8 @@ def change_bio_url(test_app):
test_user = mg_globals.database.User.one({'username': 'chris'})
- assert test_user['bio'] == u'I love toast!'
- assert test_user['url'] == u'http://dustycloud.org/'
+ assert test_user.bio == u'I love toast!'
+ assert test_user.url == u'http://dustycloud.org/'
# test changing the bio and the URL inproperly
too_long_bio = 150 * 'T' + 150 * 'o' + 150 * 'a' + 150 * 's' + 150* 't'
diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini
index f979e810..2525a4f9 100644
--- a/mediagoblin/tests/test_mgoblin_app.ini
+++ b/mediagoblin/tests/test_mgoblin_app.ini
@@ -5,7 +5,6 @@ email_debug_mode = true
db_name = __mediagoblin_tests__
# tag parsing
-tags_delimiter = ","
tags_max_length = 50
# Celery shouldn't be set up by the application as it's setup via
diff --git a/mediagoblin/tests/test_misc.py b/mediagoblin/tests/test_misc.py
new file mode 100644
index 00000000..09623355
--- /dev/null
+++ b/mediagoblin/tests/test_misc.py
@@ -0,0 +1,26 @@
+# GNU MediaGoblin -- federated, autonomous media hosting
+# Copyright (C) 2011 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
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+from nose.tools import assert_equal
+
+from mediagoblin.tests.tools import setup_fresh_app
+
+
+@setup_fresh_app
+def test_404_for_non_existent(test_app):
+ assert_equal(test_app.get('/does-not-exist/',
+ expect_errors=True).status_int,
+ 404)
diff --git a/mediagoblin/tests/test_submission.py b/mediagoblin/tests/test_submission.py
index eea5747f..7c372745 100644
--- a/mediagoblin/tests/test_submission.py
+++ b/mediagoblin/tests/test_submission.py
@@ -19,8 +19,8 @@ import pkg_resources
from nose.tools import assert_equal, assert_true, assert_false
-from mediagoblin.auth import lib as auth_lib
-from mediagoblin.tests.tools import setup_fresh_app, get_test_app
+from mediagoblin.tests.tools import setup_fresh_app, get_test_app, \
+ fixture_add_user
from mediagoblin import mg_globals
from mediagoblin.tools import template, common
@@ -45,13 +45,7 @@ class TestSubmission:
# TODO: Possibly abstract into a decorator like:
# @as_authenticated_user('chris')
- test_user = mg_globals.database.User()
- test_user['username'] = u'chris'
- test_user['email'] = u'chris@example.com'
- test_user['email_verified'] = True
- test_user['status'] = u'active'
- test_user['pw_hash'] = auth_lib.bcrypt_gen_password_hash('toast')
- test_user.save()
+ test_user = fixture_add_user()
self.test_user = test_user
@@ -176,7 +170,7 @@ class TestSubmission:
response = self.test_app.post(
request.urlgen('mediagoblin.user_pages.media_confirm_delete',
# No work: user=media.uploader().username,
- user=self.test_user['username'],
+ user=self.test_user.username,
media=media._id),
# no value means no confirm
{})
@@ -196,7 +190,7 @@ class TestSubmission:
response = self.test_app.post(
request.urlgen('mediagoblin.user_pages.media_confirm_delete',
# No work: user=media.uploader().username,
- user=self.test_user['username'],
+ user=self.test_user.username,
media=media._id),
{'confirm': 'y'})
diff --git a/mediagoblin/tests/test_tags.py b/mediagoblin/tests/test_tags.py
index a05831c9..583c1a55 100644
--- a/mediagoblin/tests/test_tags.py
+++ b/mediagoblin/tests/test_tags.py
@@ -39,11 +39,4 @@ def test_list_of_dicts_conversion(test_app):
# Make sure converting the list of dicts to a string works
assert text.media_tags_as_string([{'name': u'yin', 'slug': u'yin'},
{'name': u'yang', 'slug': u'yang'}]) == \
- u'yin,yang'
-
- # If the tag delimiter is a space then we expect different results
- mg_globals.app_config['tags_delimiter'] = u' '
- assert text.convert_to_tag_list_of_dicts('unicorn ceramic nazi') == [
- {'name': u'unicorn', 'slug': u'unicorn'},
- {'name': u'ceramic', 'slug': u'ceramic'},
- {'name': u'nazi', 'slug': u'nazi'}]
+ u'yin, yang'
diff --git a/mediagoblin/tests/test_tests.py b/mediagoblin/tests/test_tests.py
index bc5f9a8d..25bb52b3 100644
--- a/mediagoblin/tests/test_tests.py
+++ b/mediagoblin/tests/test_tests.py
@@ -27,9 +27,9 @@ def test_get_test_app_wipes_db():
assert mg_globals.database.User.find().count() == 0
new_user = mg_globals.database.User()
- new_user['username'] = u'lolcat'
- new_user['email'] = u'lol@cats.example.org'
- new_user['pw_hash'] = u'pretend_this_is_a_hash'
+ new_user.username = u'lolcat'
+ new_user.email = u'lol@cats.example.org'
+ new_user.pw_hash = u'pretend_this_is_a_hash'
new_user.save()
assert mg_globals.database.User.find().count() == 1
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index 01813e96..49a3d33e 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -27,6 +27,7 @@ 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__'
@@ -200,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