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): def test_index(self): self.log_user() 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()