Changeset - 42d7ca49d073
[Not reviewed]
beta
0 5 0
Marcin Kuzminski - 13 years ago 2013-01-24 22:41:53
marcin@python-works.com
added test for setting repo as private which should set perm => None for default user
5 files changed with 62 insertions and 3 deletions:
0 comments (0 inline, 0 general)
rhodecode/model/validators.py
Show inline comments
 
@@ -538,6 +538,9 @@ def ValidPerms(type_='repo'):
 
                            # 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)
rhodecode/tests/__init__.py
Show inline comments
 
@@ -157,7 +157,8 @@ class TestController(TestCase):
 
        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' % (
rhodecode/tests/functional/test_admin_repos.py
Show inline comments
 
@@ -213,7 +213,6 @@ class TestAdminReposController(TestContr
 
        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',
rhodecode/tests/functional/test_settings.py
Show inline comments
 
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 @@ class TestSettingsController(TestControl
 
        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
rhodecode/tests/models/test_users_group_permissions_on_groups.py
Show inline comments
 
@@ -117,6 +117,11 @@ def test_user_permissions_on_group_with_
 

	
 

	
 
@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
0 comments (0 inline, 0 general)