idea164-bexproof-verifiable.../tests/test_policy.py

42 lines
1.0 KiB
Python

import json
import time
from bexproof.policy import Policy, load_policy, evaluate_policy
def test_policy_load_and_eval_pass():
policy_text = json.dumps({
"version": 1,
"rules": {
"price_improvement_min": 0.001,
"latency_budget_ms": 10,
},
})
policy = load_policy(policy_text)
log = {
"order_id": "ORD1",
"venue": "VENUE1",
"price": 100.5,
"latency_ms": 5,
"price_improvement": 0.002,
"timestamp": int(time.time() * 1000),
}
assert evaluate_policy(log, policy) is True
def test_policy_eval_fail_due_to_latency():
policy_text = json.dumps({
"version": 1,
"rules": {
"latency_budget_ms": 2,
},
})
policy = load_policy(policy_text)
log = {
"order_id": "ORD2",
"venue": "VENUE1",
"latency_ms": 5,
"price_improvement": 0.0005,
"timestamp": int(time.time() * 1000),
}
assert evaluate_policy(log, policy) is False