Mercurial > kallithea
comparison rhodecode/tests/functional/test_admin_repos.py @ 3629:802c94bdfc85 beta
#749 and #516 Removed dupliciting of repo settings for rhodecode admins and repo admins
- repo admin now is allowed the same set of operations as the rhodecode admin
- single logic for forms/validations/permissions
- fixes #805 update external repo via webinterface
-
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Thu, 28 Mar 2013 02:57:05 +0100 |
parents | a8f2d78d14ea |
children | 10b4e34841a4 |
comparison
equal
deleted
inserted
replaced
3628:c734686b3cf2 | 3629:802c94bdfc85 |
---|---|
2 | 2 |
3 import os | 3 import os |
4 import urllib | 4 import urllib |
5 | 5 |
6 from rhodecode.lib import vcs | 6 from rhodecode.lib import vcs |
7 from rhodecode.model.db import Repository, RepoGroup | 7 from rhodecode.model.db import Repository, RepoGroup, UserRepoToPerm, User,\ |
8 Permission | |
8 from rhodecode.tests import * | 9 from rhodecode.tests import * |
9 from rhodecode.model.repos_group import ReposGroupModel | 10 from rhodecode.model.repos_group import ReposGroupModel |
10 from rhodecode.model.repo import RepoModel | 11 from rhodecode.model.repo import RepoModel |
12 from rhodecode.model.meta import Session | |
13 | |
14 | |
15 def _get_permission_for_user(user, repo): | |
16 perm = UserRepoToPerm.query()\ | |
17 .filter(UserRepoToPerm.repository == | |
18 Repository.get_by_repo_name(repo))\ | |
19 .filter(UserRepoToPerm.user == User.get_by_username(user))\ | |
20 .all() | |
21 return perm | |
11 | 22 |
12 | 23 |
13 class TestAdminReposController(TestController): | 24 class TestAdminReposController(TestController): |
14 | 25 |
15 def __make_repo(self): | 26 def __make_repo(self): |
198 try: | 209 try: |
199 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name)) | 210 vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name)) |
200 except: | 211 except: |
201 self.fail('no repo %s in filesystem' % repo_name) | 212 self.fail('no repo %s in filesystem' % repo_name) |
202 | 213 |
203 def test_new(self): | |
204 self.log_user() | |
205 response = self.app.get(url('new_repo')) | |
206 | |
207 def test_new_as_xml(self): | |
208 response = self.app.get(url('formatted_new_repo', format='xml')) | |
209 | |
210 def test_update(self): | 214 def test_update(self): |
211 response = self.app.put(url('repo', repo_name=HG_REPO)) | 215 response = self.app.put(url('repo', repo_name=HG_REPO)) |
212 | 216 |
213 def test_update_browser_fakeout(self): | 217 def test_update_browser_fakeout(self): |
214 response = self.app.post(url('repo', repo_name=HG_REPO), | 218 response = self.app.post(url('repo', repo_name=HG_REPO), |
326 response = self.app.get(url('repo', repo_name=GIT_REPO)) | 330 response = self.app.get(url('repo', repo_name=GIT_REPO)) |
327 | 331 |
328 | 332 |
329 def test_edit(self): | 333 def test_edit(self): |
330 response = self.app.get(url('edit_repo', repo_name=HG_REPO)) | 334 response = self.app.get(url('edit_repo', repo_name=HG_REPO)) |
335 | |
336 def test_set_private_flag_sets_default_to_none(self): | |
337 self.log_user() | |
338 #initially repository perm should be read | |
339 perm = _get_permission_for_user(user='default', repo=HG_REPO) | |
340 self.assertTrue(len(perm), 1) | |
341 self.assertEqual(perm[0].permission.permission_name, 'repository.read') | |
342 self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, False) | |
343 | |
344 response = self.app.put(url('repo', repo_name=HG_REPO), | |
345 _get_repo_create_params(repo_private=1, | |
346 repo_name=HG_REPO, | |
347 user=TEST_USER_ADMIN_LOGIN)) | |
348 self.checkSessionFlash(response, | |
349 msg='Repository %s updated successfully' % (HG_REPO)) | |
350 self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, True) | |
351 | |
352 #now the repo default permission should be None | |
353 perm = _get_permission_for_user(user='default', repo=HG_REPO) | |
354 self.assertTrue(len(perm), 1) | |
355 self.assertEqual(perm[0].permission.permission_name, 'repository.none') | |
356 | |
357 response = self.app.put(url('repo', repo_name=HG_REPO), | |
358 _get_repo_create_params(repo_private=False, | |
359 repo_name=HG_REPO, | |
360 user=TEST_USER_ADMIN_LOGIN)) | |
361 self.checkSessionFlash(response, | |
362 msg='Repository %s updated successfully' % (HG_REPO)) | |
363 self.assertEqual(Repository.get_by_repo_name(HG_REPO).private, False) | |
364 | |
365 #we turn off private now the repo default permission should stay None | |
366 perm = _get_permission_for_user(user='default', repo=HG_REPO) | |
367 self.assertTrue(len(perm), 1) | |
368 self.assertEqual(perm[0].permission.permission_name, 'repository.none') | |
369 | |
370 #update this permission back | |
371 perm[0].permission = Permission.get_by_key('repository.read') | |
372 Session().add(perm[0]) | |
373 Session().commit() |