diff options
Diffstat (limited to 'mediagoblin/tests')
-rw-r--r-- | mediagoblin/tests/auth_configs/persona_appconfig.ini | 42 | ||||
-rw-r--r-- | mediagoblin/tests/test_persona.py | 221 |
2 files changed, 0 insertions, 263 deletions
diff --git a/mediagoblin/tests/auth_configs/persona_appconfig.ini b/mediagoblin/tests/auth_configs/persona_appconfig.ini deleted file mode 100644 index 0bd5d634..00000000 --- a/mediagoblin/tests/auth_configs/persona_appconfig.ini +++ /dev/null @@ -1,42 +0,0 @@ -# GNU MediaGoblin -- federated, autonomous media hosting -# 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 -# 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/>. -[mediagoblin] -direct_remote_path = /test_static/ -email_sender_address = "notice@mediagoblin.example.org" -email_debug_mode = true - -# TODO: Switch to using an in-memory database -sql_engine = "sqlite:///%(here)s/user_dev/mediagoblin.db" - -# Celery shouldn't be set up by the application as it's setup via -# mediagoblin.init.celery.from_celery -celery_setup_elsewhere = true - -[storage:publicstore] -base_dir = %(here)s/user_dev/media/public -base_url = /mgoblin_media/ - -[storage:queuestore] -base_dir = %(here)s/user_dev/media/queue - -[celery] -CELERY_ALWAYS_EAGER = true -CELERY_RESULT_DBURI = "sqlite:///%(here)s/user_dev/celery.db" -BROKER_HOST = "sqlite:///%(here)s/user_dev/kombu.db" - -[plugins] -[[mediagoblin.plugins.persona]] - diff --git a/mediagoblin/tests/test_persona.py b/mediagoblin/tests/test_persona.py deleted file mode 100644 index 6e7ee419..00000000 --- a/mediagoblin/tests/test_persona.py +++ /dev/null @@ -1,221 +0,0 @@ -# GNU MediaGoblin -- federated, autonomous media hosting -# 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 -# 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/>. - -import pkg_resources -import pytest -try: - from unittest import mock -except ImportError: - import unittest.mock as mock - -import urllib.parse as urlparse - -pytest.importorskip("requests") - -from mediagoblin import mg_globals -from mediagoblin.db.base import Session -from mediagoblin.db.models import Privilege, LocalUser -from mediagoblin.tests.tools import get_app -from mediagoblin.tools import template - - -# App with plugin enabled -@pytest.fixture() -def persona_plugin_app(request): - return get_app( - request, - mgoblin_config=pkg_resources.resource_filename( - 'mediagoblin.tests.auth_configs', - 'persona_appconfig.ini')) - - -class TestPersonaPlugin: - def test_authentication_views(self, persona_plugin_app): - res = persona_plugin_app.get('/auth/login/') - - assert urlparse.urlsplit(res.location)[2] == '/' - - res = persona_plugin_app.get('/auth/register/') - - assert urlparse.urlsplit(res.location)[2] == '/' - - res = persona_plugin_app.get('/auth/persona/login/') - - assert urlparse.urlsplit(res.location)[2] == '/auth/login/' - - res = persona_plugin_app.get('/auth/persona/register/') - - assert urlparse.urlsplit(res.location)[2] == '/auth/login/' - - @mock.patch('mediagoblin.plugins.persona.views._get_response', mock.Mock(return_value='test@example.com')) - def _test_registration(): - # No register users - template.clear_test_template_context() - res = persona_plugin_app.post( - '/auth/persona/login/', {}) - - assert 'mediagoblin/auth/register.html' in template.TEMPLATE_TEST_CONTEXT - context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/register.html'] - register_form = context['register_form'] - - assert register_form.email.data == 'test@example.com' - assert register_form.persona_email.data == 'test@example.com' - - template.clear_test_template_context() - res = persona_plugin_app.post( - '/auth/persona/register/', {}) - - assert 'mediagoblin/auth/register.html' in template.TEMPLATE_TEST_CONTEXT - context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/register.html'] - register_form = context['register_form'] - - assert register_form.username.errors == ['This field is required.'] - assert register_form.email.errors == ['This field is required.'] - assert register_form.persona_email.errors == ['This field is required.'] - - # Successful register - template.clear_test_template_context() - res = persona_plugin_app.post( - '/auth/persona/register/', - {'username': 'chris', - 'email': 'chris@example.com', - 'persona_email': 'test@example.com'}) - res.follow() - - assert urlparse.urlsplit(res.location)[2] == '/u/chris/' - assert 'mediagoblin/user_pages/user_nonactive.html' in template.TEMPLATE_TEST_CONTEXT - - # Try to register same Persona email address - template.clear_test_template_context() - res = persona_plugin_app.post( - '/auth/persona/register/', - {'username': 'chris1', - 'email': 'chris1@example.com', - 'persona_email': 'test@example.com'}) - - assert 'mediagoblin/auth/register.html' in template.TEMPLATE_TEST_CONTEXT - context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/auth/register.html'] - register_form = context['register_form'] - - assert register_form.persona_email.errors == ['Sorry, an account is already registered to that Persona email.'] - - # Logout - persona_plugin_app.get('/auth/logout/') - - # Get user and detach from session - test_user = mg_globals.database.LocalUser.query.filter( - LocalUser.username=='chris' - ).first() - active_privilege = Privilege.query.filter( - Privilege.privilege_name=='active').first() - test_user.all_privileges.append(active_privilege) - test_user.save() - test_user = mg_globals.database.LocalUser.query.filter( - LocalUser.username=='chris' - ).first() - Session.expunge(test_user) - - # Add another user for _test_edit_persona - persona_plugin_app.post( - '/auth/persona/register/', - {'username': 'chris1', - 'email': 'chris1@example.com', - 'persona_email': 'test1@example.com'}) - - # Log back in - template.clear_test_template_context() - res = persona_plugin_app.post( - '/auth/persona/login/') - res.follow() - - assert urlparse.urlsplit(res.location)[2] == '/' - assert 'mediagoblin/root.html' in template.TEMPLATE_TEST_CONTEXT - - # Make sure user is in the session - context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html'] - session = context['request'].session - assert session['user_id'] == str(test_user.id) - - _test_registration() - - @mock.patch('mediagoblin.plugins.persona.views._get_response', mock.Mock(return_value='new@example.com')) - def _test_edit_persona(): - # Try and delete only Persona email address - template.clear_test_template_context() - res = persona_plugin_app.post( - '/edit/persona/', - {'email': 'test@example.com'}) - - assert 'mediagoblin/plugins/persona/edit.html' in template.TEMPLATE_TEST_CONTEXT - context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/plugins/persona/edit.html'] - form = context['form'] - - assert form.email.errors == ["You can't delete your only Persona email address unless you have a password set."] - - template.clear_test_template_context() - res = persona_plugin_app.post( - '/edit/persona/', {}) - - assert 'mediagoblin/plugins/persona/edit.html' in template.TEMPLATE_TEST_CONTEXT - context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/plugins/persona/edit.html'] - form = context['form'] - - assert form.email.errors == ['This field is required.'] - - # Try and delete Persona not owned by the user - template.clear_test_template_context() - res = persona_plugin_app.post( - '/edit/persona/', - {'email': 'test1@example.com'}) - - assert 'mediagoblin/plugins/persona/edit.html' in template.TEMPLATE_TEST_CONTEXT - context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/plugins/persona/edit.html'] - form = context['form'] - - assert form.email.errors == ['That Persona email address is not registered to this account.'] - - res = persona_plugin_app.get('/edit/persona/add/') - - assert urlparse.urlsplit(res.location)[2] == '/edit/persona/' - - # Add Persona email address - template.clear_test_template_context() - res = persona_plugin_app.post( - '/edit/persona/add/') - res.follow() - - assert urlparse.urlsplit(res.location)[2] == '/edit/account/' - - # Delete a Persona - res = persona_plugin_app.post( - '/edit/persona/', - {'email': 'test@example.com'}) - res.follow() - - assert urlparse.urlsplit(res.location)[2] == '/edit/account/' - - _test_edit_persona() - - @mock.patch('mediagoblin.plugins.persona.views._get_response', mock.Mock(return_value='test1@example.com')) - def _test_add_existing(): - template.clear_test_template_context() - res = persona_plugin_app.post( - '/edit/persona/add/') - res.follow() - - assert urlparse.urlsplit(res.location)[2] == '/edit/persona/' - - _test_add_existing() |