SimpleChatbot / hermes_overlay /tests /test_plan_integrity.py
Amin
Deploy: HermesFace finalized project to HF Space
2e658e7
Raw
History Blame Contribute Delete
1.15 kB
"""P3: plan hash integrity tests."""
from trading.plan_integrity import compute_plan_hash, verify_plan_hash, bind_plan_hash
def _sample_plan(**over):
base = {
"symbol": "BTCUSDT",
"decision": "LONG",
"entry": 100.0,
"stop_loss": 95.0,
"take_profit": 110.0,
"leverage": 5,
"quantity": 1.0,
"risk_profile": "moderate",
"futuresVerified": True,
"noTradeGuard": False,
"trading_readiness": "ready",
"executable": True,
"expires_at": "2099-01-01T00:00:00Z",
}
base.update(over)
return base
def test_hash_stable():
a = compute_plan_hash(_sample_plan())
b = compute_plan_hash(_sample_plan())
assert a == b
assert len(a) == 64
def test_hash_changes_on_field():
a = compute_plan_hash(_sample_plan())
b = compute_plan_hash(_sample_plan(entry=101.0))
assert a != b
def test_verify_and_bind():
plan = bind_plan_hash(_sample_plan())
assert "plan_hash" in plan
assert verify_plan_hash(plan, plan["plan_hash"])
plan["entry"] = 999.0
assert not verify_plan_hash(plan, plan["plan_hash"])