##// END OF EJS Templates
updated contributors
updated contributors

File last commit:

r3829:5067d6e8 beta
r4008:d8364b7e default
Show More
common.py
101 lines | 3.4 KiB | text/x-python | PythonLexer
Permissions on group can be set in recursive mode setting defined permission to all children...
r2820 from rhodecode.tests import *
more usage of fixture tools...
r3647 from rhodecode.tests.fixture import Fixture
Permissions on group can be set in recursive mode setting defined permission to all children...
r2820
from rhodecode.model.repos_group import ReposGroupModel
from rhodecode.model.repo import RepoModel
from rhodecode.model.db import RepoGroup, Repository, User
from rhodecode.model.user import UserModel
from rhodecode.lib.auth import AuthUser
from rhodecode.model.meta import Session
more usage of fixture tools...
r3647 fixture = Fixture()
Permissions on group can be set in recursive mode setting defined permission to all children...
r2820
def _destroy_project_tree(test_u1_id):
Session.remove()
repos_group = RepoGroup.get_by_group_name(group_name='g0')
for el in reversed(repos_group.recursive_groups_and_repos()):
if isinstance(el, Repository):
RepoModel().delete(el)
elif isinstance(el, RepoGroup):
ReposGroupModel().delete(el, force_delete=True)
u = User.get(test_u1_id)
Session().delete(u)
Session().commit()
def _create_project_tree():
"""
Creates a tree of groups and repositories to test permissions
structure
[g0] - group `g0` with 3 subgroups
|
|__[g0_1] group g0_1 with 2 groups 0 repos
| |
| |__[g0_1_1] group g0_1_1 with 1 group 2 repos
| | |__<g0/g0_1/g0_1_1/g0_1_1_r1>
| | |__<g0/g0_1/g0_1_1/g0_1_1_r2>
| |__<g0/g0_1/g0_1_r1>
|
|__[g0_2] 2 repos
| |
| |__<g0/g0_2/g0_2_r1>
| |__<g0/g0_2/g0_2_r2>
|
|__[g0_3] 1 repo
|
|_<g0/g0_3/g0_3_r1>
recursive mode of setting permission should skip private repositories, they should remain private, it's proper thing to do !
r3221 |_<g0/g0_3/g0_3_r2_private>
Permissions on group can be set in recursive mode setting defined permission to all children...
r2820
"""
test_u1 = UserModel().create_or_update(
username=u'test_u1', password=u'qweqwe',
email=u'test_u1@rhodecode.org', firstname=u'test_u1', lastname=u'test_u1'
)
more usage of fixture tools...
r3647 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)
Permissions on group can be set in recursive mode setting defined permission to all children...
r2820 return test_u1
def expected_count(group_name, objects=False):
repos_group = RepoGroup.get_by_group_name(group_name=group_name)
objs = repos_group.recursive_groups_and_repos()
if objects:
return objs
return len(objs)
def _check_expected_count(items, repo_items, expected):
should_be = len(items + repo_items)
there_are = len(expected)
assert should_be == there_are, ('%s != %s' % ((items + repo_items), expected))
def check_tree_perms(obj_name, repo_perm, prefix, expected_perm):
assert repo_perm == expected_perm, ('obj:`%s` got perm:`%s` should:`%s`'
% (obj_name, repo_perm, expected_perm))
def _get_perms(filter_='', recursive=True, key=None, test_u1_id=None):
test_u1 = AuthUser(user_id=test_u1_id)
for k, v in test_u1.permissions[key].items():
if recursive and k.startswith(filter_):
yield k, v
elif not recursive:
if k == filter_:
yield k, v