X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=mediagoblin%2Ftests%2F__init__.py;h=651dac24284c3a94e915df22db072daffe3314b3;hb=2104c3e0f267101da35aa9d507ae6dd3a9b0c5b6;hp=e9e2a59ae9caacd0a4e7534e9b9d2605142bfad7;hpb=9e883ed3b223311e3325e41e75dec7ee82875ac2;p=mediagoblin.git diff --git a/mediagoblin/tests/__init__.py b/mediagoblin/tests/__init__.py index e9e2a59a..651dac24 100644 --- a/mediagoblin/tests/__init__.py +++ b/mediagoblin/tests/__init__.py @@ -1,5 +1,5 @@ # GNU MediaGoblin -- federated, autonomous media hosting -# Copyright (C) 2011 Free Software Foundation, Inc +# 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 @@ -14,13 +14,50 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from mediagoblin import mg_globals +import pytest + +from mediagoblin.db.models import User, LocalUser +from mediagoblin.tests.tools import fixture_add_user +from mediagoblin.tools import template def setup_package(): - pass -def teardown_package(): - print "Killing db ..." - mg_globals.db_connection.drop_database(mg_globals.database.name) - print "... done" + import warnings + from sqlalchemy.exc import SAWarning + warnings.simplefilter("error", SAWarning) + + +class MGClientTestCase: + + usernames = None + + @pytest.fixture(autouse=True) + def setup(self, test_app): + self.test_app = test_app + + if self.usernames is None: + msg = ('The usernames attribute should be overridden ' + 'in the subclass') + raise pytest.skip(msg) + for username, options in self.usernames: + fixture_add_user(username, **options) + + def user(self, username): + return LocalUser.query.filter(LocalUser.username==username).first() + + def _do_request(self, url, *context_keys, **kwargs): + template.clear_test_template_context() + response = self.test_app.request(url, **kwargs) + context_data = template.TEMPLATE_TEST_CONTEXT + for key in context_keys: + context_data = context_data[key] + return response, context_data + + def do_get(self, url, *context_keys, **kwargs): + kwargs['method'] = 'GET' + return self._do_request(url, *context_keys, **kwargs) + + def do_post(self, url, *context_keys, **kwargs): + kwargs['method'] = 'POST' + return self._do_request(url, *context_keys, **kwargs)