Mercurial > kallithea
comparison rhodecode/tests/models/test_user_group_permissions_on_repo_groups.py @ 4116:ffd45b185016 rhodecode-2.2.5-gpl
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
This imports changes between changesets 21af6c4eab3d and 6177597791c2 in
RhodeCode's original repository, including only changes to Python files and HTML.
RhodeCode clearly licensed its changes to these files under GPLv3
in their /LICENSE file, which states the following:
The Python code and integrated HTML are licensed under the GPLv3 license.
(See:
https://code.rhodecode.com/rhodecode/files/v2.2.5/LICENSE
or
http://web.archive.org/web/20140512193334/https://code.rhodecode.com/rhodecode/files/f3b123159901f15426d18e3dc395e8369f70ebe0/LICENSE
for an online copy of that LICENSE file)
Conservancy reviewed these changes and confirmed that they can be licensed as
a whole to the Kallithea project under GPLv3-only.
While some of the contents committed herein are clearly licensed
GPLv3-or-later, on the whole we must assume the are GPLv3-only, since the
statement above from RhodeCode indicates that they intend GPLv3-only as their
license, per GPLv3ยง14 and other relevant sections of GPLv3.
author | Bradley M. Kuhn <bkuhn@sfconservancy.org> |
---|---|
date | Wed, 02 Jul 2014 19:03:13 -0400 |
parents | |
children | 7e5f8c12a3fc |
comparison
equal
deleted
inserted
replaced
4115:8b7294a804a0 | 4116:ffd45b185016 |
---|---|
1 import functools | |
2 from rhodecode.tests import * | |
3 | |
4 from rhodecode.model.repo_group import RepoGroupModel | |
5 from rhodecode.model.db import RepoGroup | |
6 | |
7 from rhodecode.model.meta import Session | |
8 from nose.tools import with_setup | |
9 from rhodecode.tests.models.common import _create_project_tree, check_tree_perms, \ | |
10 _get_perms, _check_expected_count, expected_count, _destroy_project_tree | |
11 from rhodecode.model.user_group import UserGroupModel | |
12 from rhodecode.tests.fixture import Fixture | |
13 | |
14 fixture = Fixture() | |
15 | |
16 test_u2_id = None | |
17 test_u2_gr_id = None | |
18 _get_repo_perms = None | |
19 _get_group_perms = None | |
20 | |
21 | |
22 def permissions_setup_func(group_name='g0', perm='group.read', recursive='all'): | |
23 """ | |
24 Resets all permissions to perm attribute | |
25 """ | |
26 repo_group = RepoGroup.get_by_group_name(group_name=group_name) | |
27 if not repo_group: | |
28 raise Exception('Cannot get group %s' % group_name) | |
29 perms_updates = [[test_u2_gr_id, perm, 'users_group']] | |
30 RepoGroupModel()._update_permissions(repo_group, | |
31 perms_updates=perms_updates, | |
32 recursive=recursive, check_perms=False) | |
33 Session().commit() | |
34 | |
35 | |
36 def setup_module(): | |
37 global test_u2_id, test_u2_gr_id, _get_repo_perms, _get_group_perms | |
38 test_u2 = _create_project_tree() | |
39 Session().commit() | |
40 test_u2_id = test_u2.user_id | |
41 | |
42 gr1 = fixture.create_user_group('perms_group_1') | |
43 Session().commit() | |
44 test_u2_gr_id = gr1.users_group_id | |
45 UserGroupModel().add_user_to_group(gr1, user=test_u2_id) | |
46 Session().commit() | |
47 | |
48 _get_repo_perms = functools.partial(_get_perms, key='repositories', | |
49 test_u1_id=test_u2_id) | |
50 _get_group_perms = functools.partial(_get_perms, key='repositories_groups', | |
51 test_u1_id=test_u2_id) | |
52 | |
53 | |
54 def teardown_module(): | |
55 _destroy_project_tree(test_u2_id) | |
56 | |
57 | |
58 @with_setup(permissions_setup_func) | |
59 def test_user_permissions_on_group_without_recursive_mode(): | |
60 # set permission to g0 non-recursive mode | |
61 recursive = 'none' | |
62 group = 'g0' | |
63 permissions_setup_func(group, 'group.write', recursive=recursive) | |
64 | |
65 items = [x for x in _get_repo_perms(group, recursive)] | |
66 expected = 0 | |
67 assert len(items) == expected, ' %s != %s' % (len(items), expected) | |
68 for name, perm in items: | |
69 yield check_tree_perms, name, perm, group, 'repository.read' | |
70 | |
71 items = [x for x in _get_group_perms(group, recursive)] | |
72 expected = 1 | |
73 assert len(items) == expected, ' %s != %s' % (len(items), expected) | |
74 for name, perm in items: | |
75 yield check_tree_perms, name, perm, group, 'group.write' | |
76 | |
77 | |
78 @with_setup(permissions_setup_func) | |
79 def test_user_permissions_on_group_without_recursive_mode_subgroup(): | |
80 # set permission to g0 non-recursive mode | |
81 recursive = 'none' | |
82 group = 'g0/g0_1' | |
83 permissions_setup_func(group, 'group.write', recursive=recursive) | |
84 | |
85 items = [x for x in _get_repo_perms(group, recursive)] | |
86 expected = 0 | |
87 assert len(items) == expected, ' %s != %s' % (len(items), expected) | |
88 for name, perm in items: | |
89 yield check_tree_perms, name, perm, group, 'repository.read' | |
90 | |
91 items = [x for x in _get_group_perms(group, recursive)] | |
92 expected = 1 | |
93 assert len(items) == expected, ' %s != %s' % (len(items), expected) | |
94 for name, perm in items: | |
95 yield check_tree_perms, name, perm, group, 'group.write' | |
96 | |
97 | |
98 @with_setup(permissions_setup_func) | |
99 def test_user_permissions_on_group_with_recursive_mode(): | |
100 | |
101 # set permission to g0 recursive mode, all children including | |
102 # other repos and groups should have this permission now set ! | |
103 recursive = 'all' | |
104 group = 'g0' | |
105 permissions_setup_func(group, 'group.write', recursive=recursive) | |
106 | |
107 repo_items = [x for x in _get_repo_perms(group, recursive)] | |
108 items = [x for x in _get_group_perms(group, recursive)] | |
109 _check_expected_count(items, repo_items, expected_count(group, True)) | |
110 | |
111 for name, perm in repo_items: | |
112 yield check_tree_perms, name, perm, group, 'repository.write' | |
113 | |
114 for name, perm in items: | |
115 yield check_tree_perms, name, perm, group, 'group.write' | |
116 | |
117 | |
118 @with_setup(permissions_setup_func) | |
119 def test_user_permissions_on_group_with_recursive_mode_inner_group(): | |
120 ## set permission to g0_3 group to none | |
121 recursive = 'all' | |
122 group = 'g0/g0_3' | |
123 permissions_setup_func(group, 'group.none', recursive=recursive) | |
124 | |
125 repo_items = [x for x in _get_repo_perms(group, recursive)] | |
126 items = [x for x in _get_group_perms(group, recursive)] | |
127 _check_expected_count(items, repo_items, expected_count(group, True)) | |
128 | |
129 for name, perm in repo_items: | |
130 yield check_tree_perms, name, perm, group, 'repository.none' | |
131 | |
132 for name, perm in items: | |
133 yield check_tree_perms, name, perm, group, 'group.none' | |
134 | |
135 | |
136 @with_setup(permissions_setup_func) | |
137 def test_user_permissions_on_group_with_recursive_mode_deepest(): | |
138 ## set permission to g0_3 group to none | |
139 recursive = 'all' | |
140 group = 'g0/g0_1/g0_1_1' | |
141 permissions_setup_func(group, 'group.write', recursive=recursive) | |
142 | |
143 repo_items = [x for x in _get_repo_perms(group, recursive)] | |
144 items = [x for x in _get_group_perms(group, recursive)] | |
145 _check_expected_count(items, repo_items, expected_count(group, True)) | |
146 | |
147 for name, perm in repo_items: | |
148 yield check_tree_perms, name, perm, group, 'repository.write' | |
149 | |
150 for name, perm in items: | |
151 yield check_tree_perms, name, perm, group, 'group.write' | |
152 | |
153 | |
154 @with_setup(permissions_setup_func) | |
155 def test_user_permissions_on_group_with_recursive_mode_only_with_repos(): | |
156 ## set permission to g0_3 group to none | |
157 recursive = 'all' | |
158 group = 'g0/g0_2' | |
159 permissions_setup_func(group, 'group.admin', recursive=recursive) | |
160 | |
161 repo_items = [x for x in _get_repo_perms(group, recursive)] | |
162 items = [x for x in _get_group_perms(group, recursive)] | |
163 _check_expected_count(items, repo_items, expected_count(group, True)) | |
164 | |
165 for name, perm in repo_items: | |
166 yield check_tree_perms, name, perm, group, 'repository.admin' | |
167 | |
168 for name, perm in items: | |
169 yield check_tree_perms, name, perm, group, 'group.admin' | |
170 | |
171 @with_setup(permissions_setup_func) | |
172 def test_user_permissions_on_group_with_recursive_mode_on_repos(): | |
173 # set permission to g0/g0_1 with recursive mode on just repositories | |
174 recursive = 'repos' | |
175 group = 'g0/g0_1' | |
176 perm = 'group.write' | |
177 permissions_setup_func(group, perm, recursive=recursive) | |
178 | |
179 repo_items = [x for x in _get_repo_perms(group, recursive)] | |
180 items = [x for x in _get_group_perms(group, recursive)] | |
181 _check_expected_count(items, repo_items, expected_count(group, True)) | |
182 | |
183 for name, perm in repo_items: | |
184 yield check_tree_perms, name, perm, group, 'repository.write' | |
185 | |
186 for name, perm in items: | |
187 # permission is set with repos only mode, but we also change the permission | |
188 # on the group we trigger the apply to children from, thus we need | |
189 # to change its permission check | |
190 old_perm = 'group.read' | |
191 if name == group: | |
192 old_perm = perm | |
193 yield check_tree_perms, name, perm, group, old_perm | |
194 | |
195 @with_setup(permissions_setup_func) | |
196 def test_user_permissions_on_group_with_recursive_mode_on_repo_groups(): | |
197 # set permission to g0/g0_1 with recursive mode on just repository groups | |
198 recursive = 'groups' | |
199 group = 'g0/g0_1' | |
200 perm = 'group.none' | |
201 permissions_setup_func(group, perm, recursive=recursive) | |
202 | |
203 repo_items = [x for x in _get_repo_perms(group, recursive)] | |
204 items = [x for x in _get_group_perms(group, recursive)] | |
205 _check_expected_count(items, repo_items, expected_count(group, True)) | |
206 | |
207 for name, perm in repo_items: | |
208 yield check_tree_perms, name, perm, group, 'repository.read' | |
209 | |
210 for name, perm in items: | |
211 yield check_tree_perms, name, perm, group, 'group.none' |