test/unittest_ruleset.py
changeset 372 80f78674c56e
parent 371 e9ce904b62a9
equal deleted inserted replaced
371:e9ce904b62a9 372:80f78674c56e
     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()