#96 Some tests for the base policy stuff.
Merged 8 years ago by mikem. Opened 8 years ago by ralph.

file added
+99
@@ -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)

There's more policy stuff in kojihub.py, but this only tests the stuff in
koji.policy.

Commit fd7cae5 fixes this pull-request

Pull-Request has been merged by mikem@redhat.com

8 years ago
Metadata