2 from unittest import TestCase |
2 from unittest import TestCase |
3 |
3 |
4 from mercurialserver import ruleset |
4 from mercurialserver import ruleset |
5 |
5 |
6 class _RuleSetBaseTC(TestCase): |
6 class _RuleSetBaseTC(TestCase): |
7 alllevels = ["init", "write", "read", "deny", "none"] |
7 alllevels = ["init", "publish", "write", "read", "deny", "none"] |
8 levels = alllevels[:-1] |
8 levels = alllevels[:-1] |
9 def setUp(self): |
9 def setUp(self): |
10 self.rs = ruleset.Ruleset() |
10 self.rs = ruleset.Ruleset() |
11 self.rs.buildrules(self.accessrules.splitlines()) |
11 self.rs.buildrules(self.accessrules.splitlines()) |
12 |
12 |
159 self.check_level('read', repo='toto') |
159 self.check_level('read', repo='toto') |
160 # deny takes effect here |
160 # deny takes effect here |
161 self.check_level('deny', repo='no') |
161 self.check_level('deny', repo='no') |
162 self.check_level('write', repo='other') |
162 self.check_level('write', repo='other') |
163 |
163 |
|
164 class RuleSetPublishTC(_RuleSetBaseTC): |
|
165 accessrules = ''' |
|
166 init user=root/** |
|
167 deny repo=hgadmin |
|
168 init user=users/toto/* repo=toto |
|
169 publish user=users/toto/* repo=pub/** |
|
170 publish repo=allpub/** |
|
171 write user=users/w/* |
|
172 read user=users/** |
|
173 ''' |
|
174 def test_publish(self): |
|
175 self.rs.set(user='users/w/key') |
|
176 self.check_level('publish', repo='allpub/stuff') |
|
177 self.check_level('write', repo='toto') |
|
178 self.check_level('write', repo='other/stuff') |
|
179 |
|
180 self.rs.set(repo='pub/stuff') |
|
181 self.check_level('write', user='users/w/key') |
|
182 self.check_level('publish', user='users/toto/key') |
|
183 |
|
184 |
164 if __name__ == '__main__': |
185 if __name__ == '__main__': |
165 from unittest import main |
186 from unittest import main |
166 main() |
187 main() |