debian-koji/tests/test_policy.py
2016-06-07 17:11:56 -04:00

99 lines
3.3 KiB
Python

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)