Mercurial > kallithea
diff rhodecode/tests/functional/test_admin_repos.py @ 3629:802c94bdfc85 beta
#749 and #516 Removed dupliciting of repo settings for rhodecode admins and repo admins
- repo admin now is allowed the same set of operations as the rhodecode admin
- single logic for forms/validations/permissions
- fixes #805 update external repo via webinterface
-
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Thu, 28 Mar 2013 02:57:05 +0100 |
parents | a8f2d78d14ea |
children | 10b4e34841a4 |
line wrap: on
line diff
--- a/rhodecode/tests/functional/test_admin_repos.py Thu Mar 28 02:11:26 2013 +0100 +++ b/rhodecode/tests/functional/test_admin_repos.py Thu Mar 28 02:57:05 2013 +0100 @@ -4,10 +4,21 @@ import urllib from rhodecode.lib import vcs -from rhodecode.model.db import Repository, RepoGroup +from rhodecode.model.db import Repository, RepoGroup, UserRepoToPerm, User,\ + Permission from rhodecode.tests import * from rhodecode.model.repos_group import ReposGroupModel from rhodecode.model.repo import RepoModel +from rhodecode.model.meta import Session + + +def _get_permission_for_user(user, repo): + perm = UserRepoToPerm.query()\ + .filter(UserRepoToPerm.repository == + Repository.get_by_repo_name(repo))\ + .filter(UserRepoToPerm.user == User.get_by_username(user))\ + .all() + return perm class TestAdminReposController(TestController): @@ -200,13 +211,6 @@ except: self.fail('no repo %s in filesystem' % repo_name) - def test_new(self): - self.log_user() - response = self.app.get(url('new_repo')) - - def test_new_as_xml(self): - response = self.app.get(url('formatted_new_repo', format='xml')) - def test_update(self): response = self.app.put(url('repo', repo_name=HG_REPO)) @@ -328,3 +332,42 @@ def test_edit(self): response = self.app.get(url('edit_repo', repo_name=HG_REPO)) + + def test_set_private_flag_sets_default_to_none(self): + self.log_user() + #initially repository perm should be read + perm = _get_permission_for_user(user='default', repo=HG_REPO) + self.assertTrue(len(perm), 1) + self.assertEqual(perm[0].permission.permission_name, 'repository.read') + 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, + repo_name=HG_REPO, + user=TEST_USER_ADMIN_LOGIN)) + self.checkSessionFlash(response, + msg='Repository %s updated successfully' % (HG_REPO)) + self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, True) + + #now the repo default permission should be None + perm = _get_permission_for_user(user='default', repo=HG_REPO) + self.assertTrue(len(perm), 1) + 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, + repo_name=HG_REPO, + user=TEST_USER_ADMIN_LOGIN)) + self.checkSessionFlash(response, + msg='Repository %s updated successfully' % (HG_REPO)) + self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, False) + + #we turn off private now the repo default permission should stay None + perm = _get_permission_for_user(user='default', repo=HG_REPO) + self.assertTrue(len(perm), 1) + self.assertEqual(perm[0].permission.permission_name, 'repository.none') + + #update this permission back + perm[0].permission = Permission.get_by_key('repository.read') + Session().add(perm[0]) + Session().commit()