# HG changeset patch # User Marcin Kuzminski # Date 1364852725 -7200 # Node ID 8a86836fad64ebadc9a505119b1e60149e89d51b # Parent 63e49418a4ccbd0ce67163a37831074ae658fc46 more usage of fixture tools in tests diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/__init__.py --- a/rhodecode/tests/__init__.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/__init__.py Mon Apr 01 23:45:25 2013 +0200 @@ -60,8 +60,7 @@ 'TEST_USER_REGULAR2_PASS', 'TEST_USER_REGULAR2_EMAIL', 'TEST_HG_REPO', 'TEST_HG_REPO_CLONE', 'TEST_HG_REPO_PULL', 'TEST_GIT_REPO', 'TEST_GIT_REPO_CLONE', 'TEST_GIT_REPO_PULL', 'HG_REMOTE_REPO', - 'GIT_REMOTE_REPO', 'SCM_TESTS', '_get_repo_create_params', - '_get_group_create_params' + 'GIT_REMOTE_REPO', 'SCM_TESTS', ] # Invoke websetup with the current config file @@ -174,37 +173,3 @@ msg = u'msg `%s` not found in session flash: got `%s` instead' % ( msg, response.session['flash'][0][1]) self.fail(safe_str(msg)) - - -## HELPERS ## - -def _get_repo_create_params(**custom): - defs = { - 'repo_name': None, - 'repo_type': 'hg', - 'clone_uri': '', - 'repo_group': '', - 'repo_description': 'DESC', - 'repo_private': False, - 'repo_landing_rev': 'tip' - } - defs.update(custom) - if 'repo_name_full' not in custom: - defs.update({'repo_name_full': defs['repo_name']}) - - return defs - - -def _get_group_create_params(**custom): - defs = dict( - group_name=None, - group_description='DESC', - group_parent_id=None, - perms_updates=[], - perms_new=[], - enable_locking=False, - recursive=False - ) - defs.update(custom) - - return defs diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/api/api_base.py --- a/rhodecode/tests/api/api_base.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/api/api_base.py Mon Apr 01 23:45:25 2013 +0200 @@ -3,6 +3,7 @@ import mock from rhodecode.tests import * +from rhodecode.tests.fixture import Fixture from rhodecode.lib.compat import json from rhodecode.lib.auth import AuthUser from rhodecode.model.user import UserModel @@ -12,7 +13,11 @@ from rhodecode.model.scm import ScmModel from rhodecode.model.db import Repository + API_URL = '/_admin/api' +TEST_USER_GROUP = 'test_users_group' + +fixture = Fixture() def _build_data(apikey, method, **kw): @@ -43,9 +48,7 @@ return response -TEST_USER_GROUP = 'test_users_group' - - +## helpers def make_users_group(name=TEST_USER_GROUP): gr = UserGroupModel().create(name=name) UserGroupModel().add_user_to_group(users_group=gr, @@ -59,32 +62,6 @@ Session().commit() -def create_repo(repo_name, repo_type, owner=None): - # create new repo - form_data = _get_repo_create_params( - repo_name_full=repo_name, - repo_description='description %s' % repo_name, - ) - cur_user = UserModel().get_by_username(owner or TEST_USER_ADMIN_LOGIN) - r = RepoModel().create(form_data, cur_user) - Session().commit() - return r - - -def create_fork(fork_name, fork_type, fork_of): - fork = RepoModel(Session())._get_repo(fork_of) - r = create_repo(fork_name, fork_type) - r.fork = fork - Session().add(r) - Session().commit() - return r - - -def destroy_repo(repo_name): - RepoModel().delete(repo_name) - Session().commit() - - class BaseTestApi(object): REPO = None REPO_TYPE = None @@ -248,7 +225,7 @@ pass # repo_name = 'test_pull' -# r = create_repo(repo_name, self.REPO_TYPE) +# r = fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) # r.clone_uri = TEST_self.REPO # Session.add(r) # Session.commit() @@ -261,7 +238,7 @@ # expected = 'Pulled from `%s`' % repo_name # self._compare_ok(id_, expected, given=response.body) # -# destroy_repo(repo_name) +# fixture.destroy_repo(repo_name) def test_api_pull_error(self): id_, params = _build_data(self.apikey, 'pull', @@ -317,7 +294,8 @@ def test_api_lock_repo_lock_aquire_by_non_admin(self): repo_name = 'api_delete_me' - create_repo(repo_name, self.REPO_TYPE, owner=self.TEST_USER_LOGIN) + fixture.create_repo(repo_name, repo_type=self.REPO_TYPE, + cur_user=self.TEST_USER_LOGIN) try: id_, params = _build_data(self.apikey_regular, 'lock', repoid=repo_name, @@ -327,11 +305,12 @@ % (self.TEST_USER_LOGIN, repo_name, True)) self._compare_ok(id_, expected, given=response.body) finally: - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_lock_repo_lock_aquire_non_admin_with_userid(self): repo_name = 'api_delete_me' - create_repo(repo_name, self.REPO_TYPE, owner=self.TEST_USER_LOGIN) + fixture.create_repo(repo_name, repo_type=self.REPO_TYPE, + cur_user=self.TEST_USER_LOGIN) try: id_, params = _build_data(self.apikey_regular, 'lock', userid=TEST_USER_ADMIN_LOGIN, @@ -341,7 +320,7 @@ expected = 'userid is not the same as your user' self._compare_error(id_, expected, given=response.body) finally: - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_lock_repo_lock_aquire_non_admin_not_his_repo(self): id_, params = _build_data(self.apikey_regular, 'lock', @@ -770,7 +749,7 @@ } expected = ret self._compare_ok(id_, expected, given=response.body) - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_create_repo_unknown_owner(self): repo_name = 'api-repo' @@ -800,7 +779,7 @@ } expected = ret self._compare_ok(id_, expected, given=response.body) - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_create_repo_by_non_admin(self): repo_name = 'api-repo' @@ -818,7 +797,7 @@ } expected = ret self._compare_ok(id_, expected, given=response.body) - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_create_repo_by_non_admin_specify_owner(self): repo_name = 'api-repo' @@ -832,7 +811,7 @@ expected = 'Only RhodeCode admin can specify `owner` param' self._compare_error(id_, expected, given=response.body) - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_create_repo_exists(self): repo_name = self.REPO @@ -859,7 +838,7 @@ def test_api_delete_repo(self): repo_name = 'api_delete_me' - create_repo(repo_name, self.REPO_TYPE) + fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) id_, params = _build_data(self.apikey, 'delete_repo', repoid=repo_name,) @@ -874,7 +853,8 @@ def test_api_delete_repo_by_non_admin(self): repo_name = 'api_delete_me' - create_repo(repo_name, self.REPO_TYPE, owner=self.TEST_USER_LOGIN) + fixture.create_repo(repo_name, repo_type=self.REPO_TYPE, + cur_user=self.TEST_USER_LOGIN) try: id_, params = _build_data(self.apikey_regular, 'delete_repo', repoid=repo_name,) @@ -887,11 +867,11 @@ expected = ret self._compare_ok(id_, expected, given=response.body) finally: - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_delete_repo_by_non_admin_no_permission(self): repo_name = 'api_delete_me' - create_repo(repo_name, self.REPO_TYPE) + fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) try: id_, params = _build_data(self.apikey_regular, 'delete_repo', repoid=repo_name,) @@ -899,11 +879,11 @@ expected = 'repository `%s` does not exist' % (repo_name) self._compare_error(id_, expected, given=response.body) finally: - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_delete_repo_exception_occurred(self): repo_name = 'api_delete_me' - create_repo(repo_name, self.REPO_TYPE) + fixture.create_repo(repo_name, repo_type=self.REPO_TYPE) try: with mock.patch.object(RepoModel, 'delete', crash): id_, params = _build_data(self.apikey, 'delete_repo', @@ -913,7 +893,7 @@ expected = 'failed to delete repository `%s`' % repo_name self._compare_error(id_, expected, given=response.body) finally: - destroy_repo(repo_name) + fixture.destroy_repo(repo_name) def test_api_fork_repo(self): fork_name = 'api-repo-fork' @@ -931,7 +911,7 @@ } expected = ret self._compare_ok(id_, expected, given=response.body) - destroy_repo(fork_name) + fixture.destroy_repo(fork_name) def test_api_fork_repo_non_admin(self): fork_name = 'api-repo-fork' @@ -948,7 +928,7 @@ } expected = ret self._compare_ok(id_, expected, given=response.body) - destroy_repo(fork_name) + fixture.destroy_repo(fork_name) def test_api_fork_repo_non_admin_specify_owner(self): fork_name = 'api-repo-fork' @@ -960,7 +940,7 @@ response = api_call(self, params) expected = 'Only RhodeCode admin can specify `owner` param' self._compare_error(id_, expected, given=response.body) - destroy_repo(fork_name) + fixture.destroy_repo(fork_name) def test_api_fork_repo_non_admin_no_permission_to_fork(self): RepoModel().grant_user_permission(repo=self.REPO, @@ -974,7 +954,7 @@ response = api_call(self, params) expected = 'repository `%s` does not exist' % (self.REPO) self._compare_error(id_, expected, given=response.body) - destroy_repo(fork_name) + fixture.destroy_repo(fork_name) def test_api_fork_repo_unknown_owner(self): fork_name = 'api-repo-fork' @@ -990,7 +970,7 @@ def test_api_fork_repo_fork_exists(self): fork_name = 'api-repo-fork' - create_fork(fork_name, self.REPO_TYPE, self.REPO) + fixture.create_fork(self.REPO, fork_name) try: fork_name = 'api-repo-fork' @@ -1005,7 +985,7 @@ expected = "fork `%s` already exist" % fork_name self._compare_error(id_, expected, given=response.body) finally: - destroy_repo(fork_name) + fixture.destroy_repo(fork_name) def test_api_fork_repo_repo_exists(self): fork_name = self.REPO diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/fixture.py --- a/rhodecode/tests/fixture.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/fixture.py Mon Apr 01 23:45:25 2013 +0200 @@ -1,12 +1,11 @@ """ Helpers for fixture generation """ -import os -import unittest from rhodecode.tests import * -from rhodecode.model.db import Repository, User +from rhodecode.model.db import Repository, User, RepoGroup from rhodecode.model.meta import Session from rhodecode.model.repo import RepoModel +from rhodecode.model.repos_group import ReposGroupModel class Fixture(object): @@ -14,30 +13,90 @@ def __init__(self): pass + def _get_repo_create_params(self, **custom): + defs = dict( + repo_name=None, + repo_type='hg', + clone_uri='', + repo_group='', + repo_description='DESC', + repo_private=False, + repo_landing_rev='tip' + ) + defs.update(custom) + if 'repo_name_full' not in custom: + defs.update({'repo_name_full': defs['repo_name']}) + + return defs + + def _get_group_create_params(self, **custom): + defs = dict( + group_name=None, + group_description='DESC', + group_parent_id=None, + perms_updates=[], + perms_new=[], + enable_locking=False, + recursive=False + ) + defs.update(custom) + + return defs + def create_repo(self, name, **kwargs): - form_data = _get_repo_create_params(repo_name=name, **kwargs) - cur_user = User.get_by_username(TEST_USER_ADMIN_LOGIN) + if 'skip_if_exists' in kwargs: + del kwargs['skip_if_exists'] + r = Repository.get_by_repo_name(name) + if r: + return r + + if isinstance(kwargs.get('repos_group'), RepoGroup): + #TODO: rename the repos_group ! + kwargs['repo_group'] = kwargs['repos_group'].group_id + del kwargs['repos_group'] + + form_data = self._get_repo_create_params(repo_name=name, **kwargs) + cur_user = kwargs.get('cur_user', TEST_USER_ADMIN_LOGIN) RepoModel().create(form_data, cur_user) + Session().commit() return Repository.get_by_repo_name(name) def create_fork(self, repo_to_fork, fork_name, **kwargs): repo_to_fork = Repository.get_by_repo_name(repo_to_fork) - vcs_type = repo_to_fork.repo_type + + form_data = self._get_repo_create_params(repo_name=fork_name, + fork_parent_id=repo_to_fork, + repo_type=repo_to_fork.repo_type, + **kwargs) + form_data['update_after_clone'] = False + + #TODO: fix it !! + form_data['description'] = form_data['repo_description'] + form_data['private'] = form_data['repo_private'] + form_data['landing_rev'] = form_data['repo_landing_rev'] + + owner = kwargs.get('cur_user', TEST_USER_ADMIN_LOGIN) + RepoModel().create_fork(form_data, cur_user=owner) + Session().commit() + r = Repository.get_by_repo_name(fork_name) + assert r + return r - form_data = dict( - repo_name=fork_name, - repo_name_full=fork_name, - repo_group=None, - repo_type=vcs_type, - description='', - private=False, - copy_permissions=False, - landing_rev='tip', - update_after_clone=False, - fork_parent_id=repo_to_fork, - ) - cur_user = kwargs.get('cur_user', TEST_USER_ADMIN_LOGIN) - RepoModel().create_fork(form_data, cur_user=cur_user) + def destroy_repo(self, repo_name): + RepoModel().delete(repo_name) + Session().commit() + def create_group(self, name, **kwargs): + if 'skip_if_exists' in kwargs: + del kwargs['skip_if_exists'] + gr = RepoGroup.get_by_group_name(group_name=name) + if gr: + return gr + form_data = self._get_group_create_params(group_name=name, **kwargs) + owner = kwargs.get('cur_user', TEST_USER_ADMIN_LOGIN) + gr = ReposGroupModel().create(group_name=form_data['group_name'], + group_description=form_data['group_name'], + owner=owner, parent=form_data['group_parent_id']) Session().commit() - return Repository.get_by_repo_name(fork_name) + gr = RepoGroup.get_by_group_name(gr.group_name) + return gr diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/functional/test_admin_repos.py --- a/rhodecode/tests/functional/test_admin_repos.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/functional/test_admin_repos.py Mon Apr 01 23:45:25 2013 +0200 @@ -10,6 +10,9 @@ from rhodecode.model.repos_group import ReposGroupModel from rhodecode.model.repo import RepoModel from rhodecode.model.meta import Session +from rhodecode.tests.fixture import Fixture + +fixture = Fixture() def _get_permission_for_user(user, repo): @@ -36,7 +39,7 @@ repo_name = NEW_HG_REPO description = 'description for newly created repo' response = self.app.post(url('repos'), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_name=repo_name, repo_description=description)) self.checkSessionFlash(response, @@ -70,7 +73,7 @@ description_unicode = description.decode('utf8') private = False response = self.app.post(url('repos'), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_name=repo_name, repo_description=description)) self.checkSessionFlash(response, @@ -108,7 +111,7 @@ repo_name_full = RepoGroup.url_sep().join([group_name, repo_name]) description = 'description for newly created repo' response = self.app.post(url('repos'), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_name=repo_name, repo_description=description, repo_group=gr.group_id,)) @@ -146,7 +149,7 @@ description = 'description for newly created repo' response = self.app.post(url('repos'), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_type='git', repo_name=repo_name, repo_description=description)) @@ -181,7 +184,7 @@ description_unicode = description.decode('utf8') private = False response = self.app.post(url('repos'), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_type='git', repo_name=repo_name, repo_description=description)) @@ -220,7 +223,7 @@ repo_name = 'vcs_test_new_to_delete' description = 'description for newly created repo' response = self.app.post(url('repos'), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_type='hg', repo_name=repo_name, repo_description=description)) @@ -267,7 +270,7 @@ description = 'description for newly created repo' private = False response = self.app.post(url('repos'), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_type='git', repo_name=repo_name, repo_description=description)) @@ -337,7 +340,7 @@ self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, False) response = self.app.put(url('repo', repo_name=HG_REPO), - _get_repo_create_params(repo_private=1, + fixture._get_repo_create_params(repo_private=1, repo_name=HG_REPO, user=TEST_USER_ADMIN_LOGIN)) self.checkSessionFlash(response, @@ -350,7 +353,7 @@ self.assertEqual(perm[0].permission.permission_name, 'repository.none') response = self.app.put(url('repo', repo_name=HG_REPO), - _get_repo_create_params(repo_private=False, + fixture._get_repo_create_params(repo_private=False, repo_name=HG_REPO, user=TEST_USER_ADMIN_LOGIN)) self.checkSessionFlash(response, diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/functional/test_compare.py --- a/rhodecode/tests/functional/test_compare.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/functional/test_compare.py Mon Apr 01 23:45:25 2013 +0200 @@ -52,10 +52,9 @@ def test_compare_forks_on_branch_extra_commits_hg(self): self.log_user() - repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', - description='diff-test', - owner=TEST_USER_ADMIN_LOGIN) - Session().commit() + repo1 = fixture.create_repo('one', repo_type='hg', + repo_description='diff-test', + cur_user=TEST_USER_ADMIN_LOGIN) self.r1_id = repo1.repo_id #commit something ! cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n', @@ -102,10 +101,10 @@ def test_compare_forks_on_branch_extra_commits_origin_has_incomming_hg(self): self.log_user() - repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', - description='diff-test', - owner=TEST_USER_ADMIN_LOGIN) - Session().commit() + repo1 = fixture.create_repo('one', repo_type='hg', + repo_description='diff-test', + cur_user=TEST_USER_ADMIN_LOGIN) + self.r1_id = repo1.repo_id #commit something ! @@ -168,10 +167,9 @@ #make repo1, and cs1+cs2 self.log_user() - repo1 = RepoModel().create_repo(repo_name='repo1', repo_type='hg', - description='diff-test', - owner=TEST_USER_ADMIN_LOGIN) - Session().commit() + repo1 = fixture.create_repo('repo1', repo_type='hg', + repo_description='diff-test', + cur_user=TEST_USER_ADMIN_LOGIN) self.r1_id = repo1.repo_id #commit something ! @@ -196,7 +194,7 @@ response = self.app.get(url(controller='compare', action='index', repo_name=repo2.repo_name, org_ref_type="rev", - org_ref=cs1.short_id, # parent of cs2, in repo2 + org_ref=cs1.short_id, # parent of cs2, in repo2 other_repo=repo1.repo_name, other_ref_type="rev", other_ref=cs4.short_id, @@ -230,10 +228,9 @@ # #make repo1, and cs1+cs2 self.log_user() - repo1 = RepoModel().create_repo(repo_name='repo1', repo_type='hg', - description='diff-test', - owner=TEST_USER_ADMIN_LOGIN) - Session().commit() + repo1 = fixture.create_repo('repo1', repo_type='hg', + repo_description='diff-test', + cur_user=TEST_USER_ADMIN_LOGIN) self.r1_id = repo1.repo_id #commit something ! @@ -278,9 +275,6 @@ response.mustcontain("""#C--826e8142e6ba">file1""") def test_compare_cherry_pick_changeset_mixed_branches(self): - """ - - """ pass #TODO write this tastecase @@ -316,11 +310,10 @@ def test_org_repo_new_commits_after_forking_simple_diff(self): self.log_user() - repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', - description='diff-test', - owner=TEST_USER_ADMIN_LOGIN) + repo1 = fixture.create_repo('one', repo_type='hg', + repo_description='diff-test', + cur_user=TEST_USER_ADMIN_LOGIN) - Session().commit() self.r1_id = repo1.repo_id r1_name = repo1.repo_name @@ -336,10 +329,11 @@ Session().commit() self.assertEqual(repo1.scm_instance.revisions, [cs0.raw_id]) #fork the repo1 - repo2 = RepoModel().create_repo(repo_name='one-fork', repo_type='hg', - description='compare-test', - clone_uri=repo1.repo_full_path, - owner=TEST_USER_ADMIN_LOGIN, fork_of='one') + repo2 = fixture.create_repo('one-fork', repo_type='hg', + repo_description='diff-test', + cur_user=TEST_USER_ADMIN_LOGIN, + clone_uri=repo1.repo_full_path, + fork_of='one') Session().commit() self.assertEqual(repo2.scm_instance.revisions, [cs0.raw_id]) self.r2_id = repo2.repo_id diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/functional/test_home.py --- a/rhodecode/tests/functional/test_home.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/functional/test_home.py Mon Apr 01 23:45:25 2013 +0200 @@ -1,13 +1,15 @@ import time from rhodecode.tests import * +from rhodecode.tests.fixture import Fixture from rhodecode.model.meta import Session -from rhodecode.model.db import User, RhodeCodeSetting, Repository -from rhodecode.lib.utils import set_rhodecode_config -from rhodecode.tests.models.common import _make_repo, _make_group +from rhodecode.model.db import User, Repository from rhodecode.model.repo import RepoModel from rhodecode.model.repos_group import ReposGroupModel +fixture = Fixture() + + class TestHomeController(TestController): def test_index(self): @@ -75,18 +77,19 @@ try: response = self.app.get(url(controller='home', action='index')) - response.mustcontain("""var data = {"totalRecords": %s""" % len(Repository.getAll())) + response.mustcontain("""var data = {"totalRecords": %s""" + % len(Repository.getAll())) finally: self._set_l_dash(False) def test_index_page_on_groups(self): self.log_user() - _make_repo(name='gr1/repo_in_group', repos_group=_make_group('gr1')) - Session().commit() + gr = fixture.create_group('gr1') + fixture.create_repo(name='gr1/repo_in_group', repos_group=gr) response = self.app.get(url('repos_group_home', group_name='gr1')) try: - response.mustcontain("""gr1/repo_in_group""") + response.mustcontain("gr1/repo_in_group") finally: RepoModel().delete('gr1/repo_in_group') ReposGroupModel().delete(repos_group='gr1', force_delete=True) @@ -95,8 +98,8 @@ def test_index_page_on_groups_with_lightweight_dashboard(self): self.log_user() self._set_l_dash(True) - _make_repo(name='gr1/repo_in_group', repos_group=_make_group('gr1')) - Session().commit() + fixture.create_repo(name='gr1/repo_in_group', + repos_group=fixture.create_group('gr1')) response = self.app.get(url('repos_group_home', group_name='gr1')) try: diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/functional/test_summary.py --- a/rhodecode/tests/functional/test_summary.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/functional/test_summary.py Mon Apr 01 23:45:25 2013 +0200 @@ -1,10 +1,12 @@ from rhodecode.tests import * +from rhodecode.tests.fixture import Fixture from rhodecode.model.db import Repository from rhodecode.lib.utils import invalidate_cache from rhodecode.model.repo import RepoModel -from rhodecode.tests.models.common import _make_repo from rhodecode.model.meta import Session +fixture = Fixture() + class TestSummaryController(TestController): @@ -87,14 +89,13 @@ def test_index_by_repo_having_id_path_in_name_hg(self): self.log_user() - _make_repo(name='repo_1') - Session().commit() + fixture.create_repo(name='repo_1') response = self.app.get(url(controller='summary', action='index', repo_name='repo_1')) try: - response.mustcontain("""repo_1""") + response.mustcontain("repo_1") finally: RepoModel().delete(Repository.get_by_repo_name('repo_1')) Session().commit() diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/models/common.py --- a/rhodecode/tests/models/common.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/models/common.py Mon Apr 01 23:45:25 2013 +0200 @@ -2,7 +2,7 @@ import unittest import functools from rhodecode.tests import * - +from rhodecode.tests.fixture import Fixture from rhodecode.model.repos_group import ReposGroupModel from rhodecode.model.repo import RepoModel @@ -13,23 +13,7 @@ from rhodecode.model.meta import Session -def _make_group(path, desc='desc', parent_id=None, - skip_if_exists=False): - - gr = RepoGroup.get_by_group_name(path) - if gr and skip_if_exists: - return gr - if isinstance(parent_id, RepoGroup): - parent_id = parent_id.group_id - gr = ReposGroupModel().create(path, desc, TEST_USER_ADMIN_LOGIN, parent_id) - return gr - - -def _make_repo(name, repos_group=None, repo_type='hg', private=False): - return RepoModel().create_repo(name, repo_type, 'desc', - TEST_USER_ADMIN_LOGIN, - repos_group=repos_group, - private=private) +fixture = Fixture() def _destroy_project_tree(test_u1_id): @@ -75,19 +59,19 @@ username=u'test_u1', password=u'qweqwe', email=u'test_u1@rhodecode.org', firstname=u'test_u1', lastname=u'test_u1' ) - g0 = _make_group('g0') - g0_1 = _make_group('g0_1', parent_id=g0) - g0_1_1 = _make_group('g0_1_1', parent_id=g0_1) - g0_1_1_r1 = _make_repo('g0/g0_1/g0_1_1/g0_1_1_r1', repos_group=g0_1_1) - g0_1_1_r2 = _make_repo('g0/g0_1/g0_1_1/g0_1_1_r2', repos_group=g0_1_1) - g0_1_r1 = _make_repo('g0/g0_1/g0_1_r1', repos_group=g0_1) - g0_2 = _make_group('g0_2', parent_id=g0) - g0_2_r1 = _make_repo('g0/g0_2/g0_2_r1', repos_group=g0_2) - g0_2_r2 = _make_repo('g0/g0_2/g0_2_r2', repos_group=g0_2) - g0_3 = _make_group('g0_3', parent_id=g0) - g0_3_r1 = _make_repo('g0/g0_3/g0_3_r1', repos_group=g0_3) - g0_3_r2_private = _make_repo('g0/g0_3/g0_3_r1_private', repos_group=g0_3, - private=True) + g0 = fixture.create_group('g0') + g0_1 = fixture.create_group('g0_1', group_parent_id=g0) + g0_1_1 = fixture.create_group('g0_1_1', group_parent_id=g0_1) + g0_1_1_r1 = fixture.create_repo('g0/g0_1/g0_1_1/g0_1_1_r1', repos_group=g0_1_1) + g0_1_1_r2 = fixture.create_repo('g0/g0_1/g0_1_1/g0_1_1_r2', repos_group=g0_1_1) + g0_1_r1 = fixture.create_repo('g0/g0_1/g0_1_r1', repos_group=g0_1) + g0_2 = fixture.create_group('g0_2', group_parent_id=g0) + g0_2_r1 = fixture.create_repo('g0/g0_2/g0_2_r1', repos_group=g0_2) + g0_2_r2 = fixture.create_repo('g0/g0_2/g0_2_r2', repos_group=g0_2) + g0_3 = fixture.create_group('g0_3', group_parent_id=g0) + g0_3_r1 = fixture.create_repo('g0/g0_3/g0_3_r1', repos_group=g0_3) + g0_3_r2_private = fixture.create_repo('g0/g0_3/g0_3_r1_private', + repos_group=g0_3, repo_private=True) return test_u1 diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/models/test_permissions.py --- a/rhodecode/tests/models/test_permissions.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/models/test_permissions.py Mon Apr 01 23:45:25 2013 +0200 @@ -1,7 +1,7 @@ import os import unittest from rhodecode.tests import * -from rhodecode.tests.models.common import _make_group +from rhodecode.tests.fixture import Fixture from rhodecode.model.repos_group import ReposGroupModel from rhodecode.model.repo import RepoModel from rhodecode.model.db import RepoGroup, User, UserGroupRepoGroupToPerm @@ -10,7 +10,9 @@ from rhodecode.model.meta import Session from rhodecode.model.users_group import UserGroupModel from rhodecode.lib.auth import AuthUser -from rhodecode.tests.api.api_base import create_repo + + +fixture = Fixture() class TestPermissions(unittest.TestCase): @@ -94,8 +96,8 @@ perms['repositories'][HG_REPO]) def test_default_group_perms(self): - self.g1 = _make_group('test1', skip_if_exists=True) - self.g2 = _make_group('test2', skip_if_exists=True) + self.g1 = fixture.create_group('test1', skip_if_exists=True) + self.g2 = fixture.create_group('test2', skip_if_exists=True) u1_auth = AuthUser(user_id=self.u1.user_id) perms = { 'repositories_groups': {u'test1': 'group.read', u'test2': 'group.read'}, @@ -108,8 +110,8 @@ perms['repositories_groups']) def test_default_admin_group_perms(self): - self.g1 = _make_group('test1', skip_if_exists=True) - self.g2 = _make_group('test2', skip_if_exists=True) + self.g1 = fixture.create_group('test1', skip_if_exists=True) + self.g2 = fixture.create_group('test2', skip_if_exists=True) a1_auth = AuthUser(user_id=self.a1.user_id) perms = { 'repositories_groups': {u'test1': 'group.admin', u'test2': 'group.admin'}, @@ -216,9 +218,8 @@ perms['repositories_groups']) def test_repo_in_group_permissions(self): - self.g1 = _make_group('group1', skip_if_exists=True) - self.g2 = _make_group('group2', skip_if_exists=True) - Session().commit() + self.g1 = fixture.create_group('group1', skip_if_exists=True) + self.g2 = fixture.create_group('group2', skip_if_exists=True) # both perms should be read ! u1_auth = AuthUser(user_id=self.u1.user_id) self.assertEqual(u1_auth.permissions['repositories_groups'], @@ -246,14 +247,10 @@ # add repo to group name = RepoGroup.url_sep().join([self.g1.group_name, 'test_perm']) - self.test_repo = RepoModel().create_repo( - repo_name=name, - repo_type='hg', - description='', - repos_group=self.g1, - owner=self.u1, - ) - Session().commit() + self.test_repo = fixture.create_repo(name=name, + repo_type='hg', + repos_group=self.g1, + cur_user=self.u1,) u1_auth = AuthUser(user_id=self.u1.user_id) self.assertEqual(u1_auth.permissions['repositories_groups'], @@ -287,8 +284,7 @@ def test_repo_group_user_as_user_group_member(self): # create Group1 - self.g1 = _make_group('group1', skip_if_exists=True) - Session().commit() + self.g1 = fixture.create_group('group1', skip_if_exists=True) a1_auth = AuthUser(user_id=self.anon.user_id) self.assertEqual(a1_auth.permissions['repositories_groups'], @@ -429,12 +425,10 @@ def test_owner_permissions_doesnot_get_overwritten_by_group(self): #create repo as USER, - self.test_repo = repo = RepoModel().create_repo(repo_name='myownrepo', - repo_type='hg', - description='desc', - owner=self.u1) + self.test_repo = fixture.create_repo(name='myownrepo', + repo_type='hg', + cur_user=self.u1) - Session().commit() #he has permissions of admin as owner u1_auth = AuthUser(user_id=self.u1.user_id) self.assertEqual(u1_auth.permissions['repositories']['myownrepo'], @@ -443,7 +437,8 @@ self.ug1 = UserGroupModel().create('G1') # add user to group UserGroupModel().add_user_to_group(self.ug1, self.u1) - RepoModel().grant_users_group_permission(repo, group_name=self.ug1, + RepoModel().grant_users_group_permission(self.test_repo, + group_name=self.ug1, perm='repository.none') Session().commit() @@ -453,18 +448,16 @@ def test_owner_permissions_doesnot_get_overwritten_by_others(self): #create repo as USER, - self.test_repo = repo = RepoModel().create_repo(repo_name='myownrepo', - repo_type='hg', - description='desc', - owner=self.u1) + self.test_repo = fixture.create_repo(name='myownrepo', + repo_type='hg', + cur_user=self.u1) - Session().commit() #he has permissions of admin as owner u1_auth = AuthUser(user_id=self.u1.user_id) self.assertEqual(u1_auth.permissions['repositories']['myownrepo'], 'repository.admin') #set his permission as user, he should still be admin - RepoModel().grant_user_permission(repo, user=self.u1, + RepoModel().grant_user_permission(self.test_repo, user=self.u1, perm='repository.none') Session().commit() u1_auth = AuthUser(user_id=self.u1.user_id) diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/models/test_repos_groups.py --- a/rhodecode/tests/models/test_repos_groups.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/models/test_repos_groups.py Mon Apr 01 23:45:25 2013 +0200 @@ -1,43 +1,29 @@ import os import unittest +from sqlalchemy.exc import IntegrityError + from rhodecode.tests import * +from rhodecode.tests.fixture import Fixture from rhodecode.model.repos_group import ReposGroupModel from rhodecode.model.repo import RepoModel -from rhodecode.model.db import RepoGroup, User +from rhodecode.model.db import RepoGroup from rhodecode.model.meta import Session -from sqlalchemy.exc import IntegrityError -def _make_group(path, desc='desc', parent_id=None, - skip_if_exists=False): - - gr = RepoGroup.get_by_group_name(path) - if gr and skip_if_exists: - return gr - if isinstance(parent_id, RepoGroup): - parent_id = parent_id.group_id - gr = ReposGroupModel().create(path, desc, TEST_USER_ADMIN_LOGIN, parent_id) - return gr +fixture = Fixture() def _update_group(id_, group_name, desc='desc', parent_id=None): - form_data = _get_group_create_params(group_name=group_name, - group_desc=desc, - group_parent_id=parent_id) + form_data = fixture._get_group_create_params(group_name=group_name, + group_desc=desc, + group_parent_id=parent_id) gr = ReposGroupModel().update(id_, form_data) return gr -def _make_repo(name, **kwargs): - form_data = _get_repo_create_params(repo_name=name, **kwargs) - cur_user = User.get_by_username(TEST_USER_ADMIN_LOGIN) - r = RepoModel().create(form_data, cur_user) - return r - - def _update_repo(name, **kwargs): - form_data = _get_repo_create_params(**kwargs) + form_data = fixture._get_repo_create_params(**kwargs) if not 'repo_name' in kwargs: form_data['repo_name'] = name if not 'perms_new' in kwargs: @@ -51,12 +37,9 @@ class TestReposGroups(unittest.TestCase): def setUp(self): - self.g1 = _make_group('test1', skip_if_exists=True) - Session().commit() - self.g2 = _make_group('test2', skip_if_exists=True) - Session().commit() - self.g3 = _make_group('test3', skip_if_exists=True) - Session().commit() + self.g1 = fixture.create_group('test1', skip_if_exists=True) + self.g2 = fixture.create_group('test2', skip_if_exists=True) + self.g3 = fixture.create_group('test3', skip_if_exists=True) def tearDown(self): Session.remove() @@ -76,47 +59,42 @@ ReposGroupModel().delete(id_) def test_create_group(self): - g = _make_group('newGroup') + g = fixture.create_group('newGroup') Session().commit() self.assertEqual(g.full_path, 'newGroup') self.assertTrue(self.__check_path('newGroup')) def test_create_same_name_group(self): - self.assertRaises(IntegrityError, lambda: _make_group('newGroup')) + self.assertRaises(IntegrityError, lambda: fixture.create_group('newGroup')) Session().rollback() def test_same_subgroup(self): - sg1 = _make_group('sub1', parent_id=self.g1.group_id) - Session().commit() + sg1 = fixture.create_group('sub1', group_parent_id=self.g1.group_id) self.assertEqual(sg1.parent_group, self.g1) self.assertEqual(sg1.full_path, 'test1/sub1') self.assertTrue(self.__check_path('test1', 'sub1')) - ssg1 = _make_group('subsub1', parent_id=sg1.group_id) - Session().commit() + ssg1 = fixture.create_group('subsub1', group_parent_id=sg1.group_id) self.assertEqual(ssg1.parent_group, sg1) self.assertEqual(ssg1.full_path, 'test1/sub1/subsub1') self.assertTrue(self.__check_path('test1', 'sub1', 'subsub1')) def test_remove_group(self): - sg1 = _make_group('deleteme') - Session().commit() + sg1 = fixture.create_group('deleteme') self.__delete_group(sg1.group_id) self.assertEqual(RepoGroup.get(sg1.group_id), None) self.assertFalse(self.__check_path('deteteme')) - sg1 = _make_group('deleteme', parent_id=self.g1.group_id) - Session().commit() + sg1 = fixture.create_group('deleteme', group_parent_id=self.g1.group_id) self.__delete_group(sg1.group_id) self.assertEqual(RepoGroup.get(sg1.group_id), None) self.assertFalse(self.__check_path('test1', 'deteteme')) def test_rename_single_group(self): - sg1 = _make_group('initial') - Session().commit() + sg1 = fixture.create_group('initial') new_sg1 = _update_group(sg1.group_id, 'after') self.assertTrue(self.__check_path('after')) @@ -124,8 +102,7 @@ def test_update_group_parent(self): - sg1 = _make_group('initial', parent_id=self.g1.group_id) - Session().commit() + sg1 = fixture.create_group('initial', group_parent_id=self.g1.group_id) new_sg1 = _update_group(sg1.group_id, 'after', parent_id=self.g1.group_id) self.assertTrue(self.__check_path('test1', 'after')) @@ -142,12 +119,11 @@ def test_subgrouping_with_repo(self): - g1 = _make_group('g1') - g2 = _make_group('g2') - Session().commit() + g1 = fixture.create_group('g1') + g2 = fixture.create_group('g2') # create new repo - r = _make_repo('john') - Session().commit() + r = fixture.create_repo('john') + self.assertEqual(r.repo_name, 'john') # put repo into group r = _update_repo('john', repo_group=g1.group_id) @@ -162,10 +138,8 @@ r.just_name])) def test_move_to_root(self): - g1 = _make_group('t11') - Session().commit() - g2 = _make_group('t22', parent_id=g1.group_id) - Session().commit() + g1 = fixture.create_group('t11') + g2 = fixture.create_group('t22', group_parent_id=g1.group_id) self.assertEqual(g2.full_path, 't11/t22') self.assertTrue(self.__check_path('t11', 't22')) @@ -180,15 +154,11 @@ self.assertTrue(self.__check_path('g22')) def test_rename_top_level_group_in_nested_setup(self): - g1 = _make_group('L1') - Session().commit() - g2 = _make_group('L2', parent_id=g1.group_id) - Session().commit() - g3 = _make_group('L3', parent_id=g2.group_id) - Session().commit() + g1 = fixture.create_group('L1') + g2 = fixture.create_group('L2', group_parent_id=g1.group_id) + g3 = fixture.create_group('L3', group_parent_id=g2.group_id) - r = _make_repo('L1/L2/L3/L3_REPO', repo_group=g3.group_id) - Session().commit() + r = fixture.create_repo('L1/L2/L3/L3_REPO', repo_group=g3.group_id) ##rename L1 all groups should be now changed _update_group(g1.group_id, 'L1_NEW') @@ -199,18 +169,12 @@ self.assertEqual(r.repo_name, 'L1_NEW/L2/L3/L3_REPO') def test_change_parent_of_top_level_group_in_nested_setup(self): - g1 = _make_group('R1') - Session().commit() - g2 = _make_group('R2', parent_id=g1.group_id) - Session().commit() - g3 = _make_group('R3', parent_id=g2.group_id) - Session().commit() + g1 = fixture.create_group('R1') + g2 = fixture.create_group('R2', group_parent_id=g1.group_id) + g3 = fixture.create_group('R3', group_parent_id=g2.group_id) + g4 = fixture.create_group('R1_NEW') - g4 = _make_group('R1_NEW') - Session().commit() - - r = _make_repo('R1/R2/R3/R3_REPO', repo_group=g3.group_id) - Session().commit() + r = fixture.create_repo('R1/R2/R3/R3_REPO', repo_group=g3.group_id) ##rename L1 all groups should be now changed _update_group(g1.group_id, 'R1', parent_id=g4.group_id) Session().commit() @@ -220,18 +184,12 @@ self.assertEqual(r.repo_name, 'R1_NEW/R1/R2/R3/R3_REPO') def test_change_parent_of_top_level_group_in_nested_setup_with_rename(self): - g1 = _make_group('X1') - Session().commit() - g2 = _make_group('X2', parent_id=g1.group_id) - Session().commit() - g3 = _make_group('X3', parent_id=g2.group_id) - Session().commit() + g1 = fixture.create_group('X1') + g2 = fixture.create_group('X2', group_parent_id=g1.group_id) + g3 = fixture.create_group('X3', group_parent_id=g2.group_id) + g4 = fixture.create_group('X1_NEW') - g4 = _make_group('X1_NEW') - Session().commit() - - r = _make_repo('X1/X2/X3/X3_REPO', repo_group=g3.group_id) - Session().commit() + r = fixture.create_repo('X1/X2/X3/X3_REPO', repo_group=g3.group_id) ##rename L1 all groups should be now changed _update_group(g1.group_id, 'X1_PRIM', parent_id=g4.group_id) diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/models/test_users.py --- a/rhodecode/tests/models/test_users.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/models/test_users.py Mon Apr 01 23:45:25 2013 +0200 @@ -14,6 +14,9 @@ Session.remove() super(TestUser, self).__init__(methodName=methodName) + def tearDown(self): + Session.remove() + def test_create_and_remove(self): usr = UserModel().create_or_update(username=u'test_user', password=u'qweqwe', @@ -99,6 +102,7 @@ UserModel().delete(self.u1) Session().commit() + Session.remove() def test_add_perm(self): perm = Permission.query().all()[0] diff -r 63e49418a4cc -r 8a86836fad64 rhodecode/tests/test_validators.py --- a/rhodecode/tests/test_validators.py Sun Mar 31 21:44:27 2013 +0200 +++ b/rhodecode/tests/test_validators.py Mon Apr 01 23:45:25 2013 +0200 @@ -12,7 +12,6 @@ from rhodecode.config.routing import ADMIN_PREFIX from rhodecode.model.db import ChangesetStatus, Repository from rhodecode.model.changeset_status import ChangesetStatusModel -from rhodecode.model.comment import ChangesetCommentsModel class TestReposGroups(unittest.TestCase): @@ -21,7 +20,7 @@ pass def tearDown(self): - pass + Session.remove() def test_Message_extractor(self): validator = v.ValidUsername()