##// END OF EJS Templates
fixed missing permissions check on forks page
marcink -
r2176:162bf5c9 beta
parent child Browse files
Show More
@@ -19,6 +19,7 b' fixes'
19 19 +++++
20 20
21 21 - fixed dev-version marker for stable when served from source codes
22 - fixed missing permission checks on show forks page
22 23
23 24 1.3.4 (**2012-03-28**)
24 25 ----------------------
@@ -35,7 +35,7 b' import rhodecode.lib.helpers as h'
35 35
36 36 from rhodecode.lib.helpers import Page
37 37 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator, \
38 NotAnonymous
38 NotAnonymous, HasRepoPermissionAny
39 39 from rhodecode.lib.base import BaseRepoController, render
40 40 from rhodecode.model.db import Repository, RepoGroup, UserFollowing, User
41 41 from rhodecode.model.repo import RepoModel
@@ -103,7 +103,13 b' class ForksController(BaseRepoController'
103 103 def forks(self, repo_name):
104 104 p = int(request.params.get('page', 1))
105 105 repo_id = c.rhodecode_db_repo.repo_id
106 d = Repository.get_repo_forks(repo_id)
106 d = []
107 for r in Repository.get_repo_forks(repo_id):
108 if not HasRepoPermissionAny(
109 'repository.read', 'repository.write', 'repository.admin'
110 )(r.repo_name, 'get forks check'):
111 continue
112 d.append(r)
107 113 c.forks_pager = Page(d, page=p, items_per_page=20)
108 114
109 115 c.forks_data = render('/forks/forks_data.html')
@@ -1,9 +1,25 b''
1 1 from rhodecode.tests import *
2 2
3 3 from rhodecode.model.db import Repository
4 from rhodecode.model.repo import RepoModel
5 from rhodecode.model.user import UserModel
6
4 7
5 8 class TestForksController(TestController):
6 9
10 def setUp(self):
11 self.username = u'forkuser'
12 self.password = u'qweqwe'
13 self.u1 = UserModel().create_or_update(
14 username=self.username, password=self.password,
15 email=u'fork_king@rhodecode.org', name=u'u1', lastname=u'u1'
16 )
17 self.Session.commit()
18
19 def tearDown(self):
20 self.Session.delete(self.u1)
21 self.Session.commit()
22
7 23 def test_index(self):
8 24 self.log_user()
9 25 repo_name = HG_REPO
@@ -12,7 +28,6 b' class TestForksController(TestController'
12 28
13 29 self.assertTrue("""There are no forks yet""" in response.body)
14 30
15
16 31 def test_index_with_fork(self):
17 32 self.log_user()
18 33
@@ -34,7 +49,6 b' class TestForksController(TestController'
34 49 response = self.app.get(url(controller='forks', action='forks',
35 50 repo_name=repo_name))
36 51
37
38 52 self.assertTrue("""<a href="/%s/summary">"""
39 53 """vcs_test_hg_fork</a>""" % fork_name
40 54 in response.body)
@@ -42,9 +56,6 b' class TestForksController(TestController'
42 56 #remove this fork
43 57 response = self.app.delete(url('repo', repo_name=fork_name))
44 58
45
46
47
48 59 def test_z_fork_create(self):
49 60 self.log_user()
50 61 fork_name = HG_FORK
@@ -71,11 +82,9 b' class TestForksController(TestController'
71 82 self.assertEqual(fork_repo.repo_name, fork_name)
72 83 self.assertEqual(fork_repo.fork.repo_name, repo_name)
73 84
74
75 85 #test if fork is visible in the list ?
76 86 response = response.follow()
77 87
78
79 88 # check if fork is marked as fork
80 89 # wait for cache to expire
81 90 import time
@@ -84,3 +93,41 b' class TestForksController(TestController'
84 93 repo_name=fork_name))
85 94
86 95 self.assertTrue('Fork of %s' % repo_name in response.body)
96
97 def test_zz_fork_permission_page(self):
98 usr = self.log_user(self.username, self.password)['user_id']
99 repo_name = HG_REPO
100
101 forks = self.Session.query(Repository)\
102 .filter(Repository.fork_id != None)\
103 .all()
104 self.assertEqual(1, len(forks))
105
106 # set read permissions for this
107 RepoModel().grant_user_permission(repo=forks[0],
108 user=usr,
109 perm='repository.read')
110 self.Session.commit()
111
112 response = self.app.get(url(controller='forks', action='forks',
113 repo_name=repo_name))
114
115 response.mustcontain('<div style="padding:5px 3px 3px 42px;">fork of vcs test</div>')
116
117 def test_zzz_fork_permission_page(self):
118 usr = self.log_user(self.username, self.password)['user_id']
119 repo_name = HG_REPO
120
121 forks = self.Session.query(Repository)\
122 .filter(Repository.fork_id != None)\
123 .all()
124 self.assertEqual(1, len(forks))
125
126 # set none
127 RepoModel().grant_user_permission(repo=forks[0],
128 user=usr, perm='repository.none')
129 self.Session.commit()
130 # fork shouldn't be there
131 response = self.app.get(url(controller='forks', action='forks',
132 repo_name=repo_name))
133 response.mustcontain('There are no forks yet')
General Comments 0
You need to be logged in to leave comments. Login now