Some tests for the base policy stuff.
This commit is contained in:
parent
3f91d4834b
commit
a876e9750b
1 changed files with 99 additions and 0 deletions
99
tests/test_policy.py
Normal file
99
tests/test_policy.py
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
import unittest
|
||||
|
||||
from nose.tools import raises
|
||||
|
||||
import koji.policy
|
||||
|
||||
|
||||
class TestPolicyObjects(unittest.TestCase):
|
||||
|
||||
@raises(NotImplementedError)
|
||||
def test_base_test(self):
|
||||
obj = koji.policy.BaseSimpleTest('something')
|
||||
obj.run({})
|
||||
|
||||
def test_true_test(self):
|
||||
obj = koji.policy.TrueTest('something')
|
||||
self.assertTrue(obj.run({}))
|
||||
|
||||
def test_false_test(self):
|
||||
obj = koji.policy.FalseTest('something')
|
||||
self.assertFalse(obj.run({}))
|
||||
|
||||
def test_all_test(self):
|
||||
obj = koji.policy.AllTest('something')
|
||||
self.assertTrue(obj.run({}))
|
||||
|
||||
def test_none_test(self):
|
||||
obj = koji.policy.NoneTest('something')
|
||||
self.assertFalse(obj.run({}))
|
||||
|
||||
def test_has_test(self):
|
||||
obj = koji.policy.HasTest('some thing')
|
||||
self.assertFalse(obj.run({}))
|
||||
self.assertFalse(obj.run({'blah': 'blah'}))
|
||||
self.assertTrue(obj.run({'thing': 'blah'}))
|
||||
self.assertRaises(koji.GenericError, koji.policy.HasTest, 'something')
|
||||
|
||||
def test_bool_test(self):
|
||||
obj = koji.policy.BoolTest('some thing')
|
||||
self.assertFalse(obj.run({'thing': None}))
|
||||
self.assertFalse(obj.run({'thing': []}))
|
||||
self.assertTrue(obj.run({'thing': 'yes'}))
|
||||
|
||||
def test_match_test(self):
|
||||
obj = koji.policy.MatchTest('some thing else')
|
||||
self.assertFalse(obj.run({'thing': 'elseplus'}))
|
||||
obj = koji.policy.MatchTest('some thing else*')
|
||||
self.assertTrue(obj.run({'thing': 'elseplus'}))
|
||||
|
||||
def test_compare_test(self):
|
||||
obj = koji.policy.CompareTest('some thing > 2')
|
||||
self.assertFalse(obj.run({'thing': 1}))
|
||||
self.assertFalse(obj.run({'thing': 2}))
|
||||
self.assertTrue(obj.run({'thing': 3}))
|
||||
# I'm not going to test every operator..
|
||||
|
||||
@raises(koji.GenericError)
|
||||
def test_invalid_compare_test(self):
|
||||
koji.policy.CompareTest('some thing LOL 2')
|
||||
|
||||
def test_find_simple_tests(self):
|
||||
actual = koji.policy.findSimpleTests(koji.policy.__dict__)
|
||||
expected = {
|
||||
'all': koji.policy.AllTest,
|
||||
'bool': koji.policy.BoolTest,
|
||||
'compare': koji.policy.CompareTest,
|
||||
'false': koji.policy.FalseTest,
|
||||
'has': koji.policy.HasTest,
|
||||
'match': koji.policy.MatchTest,
|
||||
'none': koji.policy.NoneTest,
|
||||
'true': koji.policy.TrueTest,
|
||||
}
|
||||
self.assertDictEqual(expected, actual)
|
||||
|
||||
def test_simple_rule_set_instantiation(self):
|
||||
tests = koji.policy.findSimpleTests(koji.policy.__dict__)
|
||||
rules = ['true :: allow']
|
||||
koji.policy.SimpleRuleSet(rules, tests)
|
||||
|
||||
def test_simple_rule_set_all_actions(self):
|
||||
tests = koji.policy.findSimpleTests(koji.policy.__dict__)
|
||||
rules = ['true :: allow']
|
||||
obj = koji.policy.SimpleRuleSet(rules, tests)
|
||||
result = obj.all_actions()
|
||||
self.assertEquals(result, ['allow'])
|
||||
|
||||
def test_simple_rule_set_apply(self):
|
||||
tests = koji.policy.findSimpleTests(koji.policy.__dict__)
|
||||
data = {}
|
||||
|
||||
rules = ['true :: allow']
|
||||
obj = koji.policy.SimpleRuleSet(rules, tests)
|
||||
action = obj.apply(data)
|
||||
self.assertEqual(action, 'allow')
|
||||
|
||||
rules = ['false :: allow']
|
||||
obj = koji.policy.SimpleRuleSet(rules, tests)
|
||||
action = obj.apply(data)
|
||||
self.assertEqual(action, None)
|
||||
Loading…
Add table
Add a link
Reference in a new issue