31 lines
965 B
Python
31 lines
965 B
Python
import unittest
|
|
from feedtrust.policy import PolicyEngine
|
|
|
|
|
|
class TestPolicyEngine(unittest.TestCase):
|
|
def test_basic_policy_compile_and_check(self):
|
|
engine = PolicyEngine()
|
|
dsl = (
|
|
'allow subject="traderA" venue="venue1" signal="price" action="read" '
|
|
'latency_ms=5 volume_cap=1000 regulatory="none"'
|
|
)
|
|
engine.load_policies(dsl)
|
|
ok = engine.check_access(
|
|
subject="traderA",
|
|
venue="venue1",
|
|
signal="price",
|
|
action="read",
|
|
)
|
|
self.assertTrue(ok)
|
|
|
|
def test_policy_denies_wrong_subject(self):
|
|
engine = PolicyEngine()
|
|
dsl = 'allow subject="traderA" venue="venue1" signal="price" action="read" latency_ms=5'
|
|
engine.load_policies(dsl)
|
|
ok = engine.check_access(subject="traderB", venue="venue1", signal="price", action="read")
|
|
self.assertFalse(ok)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|