CORD-1385: Autogenerate validation code
Change-Id: I8dda8f78482b382cd5d9c5397070266324d4fab9
diff --git a/lib/xos-genx/tests/policy_test.py b/lib/xos-genx/tests/policy_test.py
index fcfed8a..25c307e 100644
--- a/lib/xos-genx/tests/policy_test.py
+++ b/lib/xos-genx/tests/policy_test.py
@@ -1,6 +1,7 @@
import unittest
from xosgenx.generator import XOSGenerator
from helpers import FakeArgs, XProtoTestHelpers
+import pdb
"""
The tests below convert the policy logic expression
@@ -42,6 +43,26 @@
output = XOSGenerator.generate(args).replace('t','T')
self.assertTrue(eval(output))
+ def test_function_term(self):
+ xproto = \
+"""
+ policy slice_user < slice.user.compute_is_admin() >
+"""
+
+ target = XProtoTestHelpers.write_tmp_target("{{ proto.policies.slice_user }}")
+ args = FakeArgs()
+ args.inputs = xproto
+ args.target = target
+
+ output = XOSGenerator.generate(args)
+
+ slice = FakeArgs()
+ slice.user = FakeArgs()
+ slice.user.compute_is_admin = lambda: True
+
+ expr = eval(output)
+ self.assertTrue(expr)
+
def test_term(self):
xproto = \
"""
@@ -147,7 +168,29 @@
self.assertFalse(eval(expr))
-
+ def test_implies(self):
+ xproto = \
+"""
+ policy implies < obj.name -> obj.creator >
+"""
+ target = XProtoTestHelpers.write_tmp_target("{{ proto.policies.implies }}")
+ args = FakeArgs()
+ args.inputs = xproto
+ args.target = target
+
+ output = XOSGenerator.generate(args)
+
+ slice = FakeArgs()
+ slice.is_admin = False
+ obj = FakeArgs()
+ obj.name = 'Thing 1'
+ obj.creator = None
+
+ (op, operands), = eval(output).items()
+ expr = 'not ' + op.join(operands).replace('->',' or ')
+
+ self.assertFalse(eval(expr))
+
def test_exists(self):
xproto = \
"""