novaplan-decentralized-priv.../tests/test_cac_contracts.py

30 lines
1.1 KiB
Python

import json
from nova_plan.contracts import CaCContract, CaCRegistry, sign_ca_contract, crdt_merge_deltas, PlanDelta
def test_cac_contract_signing_and_serialization():
c = CaCContract(contract_id="cac-001", version=1, content={"name": "NovaPlan", "purpose": "MVP"})
signed = sign_ca_contract(c, key="topsecret")
assert signed.signature is not None
s = signed.to_json()
# Ensure JSON can be parsed back without error
parsed = json.loads(s)
assert parsed.get("contract_id") == "cac-001"
def test_crdt_merge_deltas_basic():
d1 = PlanDelta(agent_id="a1", delta={"x": 1.0}, timestamp=1.0)
d2 = PlanDelta(agent_id="a2", delta={"y": 2.0}, timestamp=2.0)
merged = crdt_merge_deltas(d1, d2)
assert isinstance(merged, PlanDelta)
assert "x" in merged.delta and "y" in merged.delta
assert merged.timestamp == 2.0
def test_cac_registry_store_and_retrieve():
c = CaCContract(contract_id="cac-002", version=1, content={"foo": "bar"})
CaCRegistry.register(c)
retrieved = CaCRegistry.get("cac-002")
assert retrieved is c