a1d827e4906d36a5dc566f4b9aeedf27699fce58
[python_utils.git] / tests / acl_test.py
1 #!/usr/bin/env python3
2
3 import re
4 import unittest
5
6 import acl
7 import unittest_utils  # Needed for --unittests_ignore_perf flag
8
9
10 class TestSimpleACL(unittest.TestCase):
11     def test_set_based_acl(self):
12         even = acl.SetBasedACL(
13             allow_set=set([2, 4, 6, 8, 10]),
14             deny_set=set([1, 3, 5, 7, 9]),
15             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
16             default_answer=False,
17         )
18         self.assertTrue(even(2))
19         self.assertFalse(even(3))
20         self.assertFalse(even(-4))
21
22     def test_wildcard_based_acl(self):
23         a_or_b = acl.StringWildcardBasedACL(
24             allowed_patterns=['a*', 'b*'],
25             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
26             default_answer=False,
27         )
28         self.assertTrue(a_or_b('aardvark'))
29         self.assertTrue(a_or_b('baboon'))
30         self.assertFalse(a_or_b('cheetah'))
31
32     def test_re_based_acl(self):
33         weird = acl.StringREBasedACL(
34             denied_regexs=[re.compile('^a.*a$'), re.compile('^b.*b$')],
35             order_to_check_allow_deny=acl.Order.DENY_ALLOW,
36             default_answer=True,
37         )
38         self.assertTrue(weird('aardvark'))
39         self.assertFalse(weird('anaconda'))
40         self.assertFalse(weird('blackneb'))
41         self.assertTrue(weird('crow'))
42
43     def test_compound_acls_disjunction(self):
44         a_b_c = acl.StringWildcardBasedACL(
45             allowed_patterns=['a*', 'b*', 'c*'],
46             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
47             default_answer=False,
48         )
49         c_d_e = acl.StringWildcardBasedACL(
50             allowed_patterns=['c*', 'd*', 'e*'],
51             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
52             default_answer=False,
53         )
54         disjunction = acl.AnyCompoundACL(
55             subacls=[a_b_c, c_d_e],
56             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
57             default_answer=False,
58         )
59         self.assertTrue(disjunction('aardvark'))
60         self.assertTrue(disjunction('caribou'))
61         self.assertTrue(disjunction('eagle'))
62         self.assertFalse(disjunction('newt'))
63
64     def test_compound_acls_conjunction(self):
65         a_b_c = acl.StringWildcardBasedACL(
66             allowed_patterns=['a*', 'b*', 'c*'],
67             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
68             default_answer=False,
69         )
70         c_d_e = acl.StringWildcardBasedACL(
71             allowed_patterns=['c*', 'd*', 'e*'],
72             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
73             default_answer=False,
74         )
75         conjunction = acl.AllCompoundACL(
76             subacls=[a_b_c, c_d_e],
77             order_to_check_allow_deny=acl.Order.ALLOW_DENY,
78             default_answer=False,
79         )
80         self.assertFalse(conjunction('aardvark'))
81         self.assertTrue(conjunction('caribou'))
82         self.assertTrue(conjunction('condor'))
83         self.assertFalse(conjunction('eagle'))
84         self.assertFalse(conjunction('newt'))
85
86
87 if __name__ == '__main__':
88     unittest.main()