30 lines
1.1 KiB
Python
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
|