# HG changeset patch # User Marcin Kuzminski # Date 1359063713 -3600 # Node ID 42d7ca49d073141dd94108b9d7910d5d939945a2 # Parent c0b0351233ec593c040638970acb13b6adb5eaf5 added test for setting repo as private which should set perm => None for default user diff -r c0b0351233ec -r 42d7ca49d073 rhodecode/model/validators.py --- a/rhodecode/model/validators.py Thu Jan 24 01:20:03 2013 +0100 +++ b/rhodecode/model/validators.py Thu Jan 24 22:41:53 2013 +0100 @@ -538,6 +538,9 @@ # private repo v = EMPTY_PERM perms_update.add((member, v, t)) + #always set NONE when private flag is set + if value.get('repo_private'): + perms_update.add(('default', EMPTY_PERM, 'user')) value['perms_updates'] = list(perms_update) value['perms_new'] = list(perms_new) diff -r c0b0351233ec -r 42d7ca49d073 rhodecode/tests/__init__.py --- a/rhodecode/tests/__init__.py Thu Jan 24 01:20:03 2013 +0100 +++ b/rhodecode/tests/__init__.py Thu Jan 24 22:41:53 2013 +0100 @@ -157,7 +157,8 @@ return User.get_by_username(self._logged_username) def checkSessionFlash(self, response, msg): - self.assertTrue('flash' in response.session) + self.assertTrue('flash' in response.session, + msg='Response session:%r have no flash' % response.session) if not msg in response.session['flash'][0][1]: self.fail( 'msg `%s` not found in session flash: got `%s` instead' % ( diff -r c0b0351233ec -r 42d7ca49d073 rhodecode/tests/functional/test_admin_repos.py --- a/rhodecode/tests/functional/test_admin_repos.py Thu Jan 24 01:20:03 2013 +0100 +++ b/rhodecode/tests/functional/test_admin_repos.py Thu Jan 24 22:41:53 2013 +0100 @@ -213,7 +213,6 @@ self.log_user() repo_name = 'vcs_test_new_to_delete' description = 'description for newly created repo' - private = False response = self.app.post(url('repos'), _get_repo_create_params(repo_private=False, repo_type='hg', diff -r c0b0351233ec -r 42d7ca49d073 rhodecode/tests/functional/test_settings.py --- a/rhodecode/tests/functional/test_settings.py Thu Jan 24 01:20:03 2013 +0100 +++ b/rhodecode/tests/functional/test_settings.py Thu Jan 24 22:41:53 2013 +0100 @@ -1,5 +1,16 @@ -from rhodecode.model.db import Repository from rhodecode.tests import * +from rhodecode.model.db import UserRepoToPerm, Repository, User, Permission +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 TestSettingsController(TestController): @@ -8,3 +19,43 @@ response = self.app.get(url(controller='settings', action='index', repo_name=HG_REPO)) # Test response... + + 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() + \ No newline at end of file diff -r c0b0351233ec -r 42d7ca49d073 rhodecode/tests/models/test_users_group_permissions_on_groups.py --- a/rhodecode/tests/models/test_users_group_permissions_on_groups.py Thu Jan 24 01:20:03 2013 +0100 +++ b/rhodecode/tests/models/test_users_group_permissions_on_groups.py Thu Jan 24 22:41:53 2013 +0100 @@ -117,6 +117,11 @@ @with_setup(permissions_setup_func) +def test_user_permissions_on_group_with_recursive_mode_and_private_repos(): + assert 0 + + +@with_setup(permissions_setup_func) def test_user_permissions_on_group_with_recursive_mode_inner_group(): ## set permission to g0_3 group to none recursive = True