import pytest from idea189_replicaweave_safe_mutation.crdt import Op, Delta from idea189_replicaweave_safe_mutation.test_cartridge import built_in_cartridges from idea189_replicaweave_safe_mutation.harness import run_cartridge from idea189_replicaweave_safe_mutation.signer import generate_keypair, sign_bytes, verify_signature def test_delta_merge_and_root(): a1 = Op(timestamp=1, actor="A", idx=0, op_type="param-set", target="/svc/replicas", value=3) a2 = Op(timestamp=2, actor="A", idx=1, op_type="graft", target="/svc/new", value={"image": "v1"}) b1 = Op(timestamp=2, actor="B", idx=0, op_type="param-set", target="/svc/replicas", value=4) d1 = Delta([a1, a2]) d2 = Delta([b1]) merged = d1.merge(d2) # merged should contain 3 ops assert len(merged.ops) == 3 root = merged.ops_root() assert isinstance(root, str) and len(root) == 64 def test_harness_and_signing(): # prepare a simple delta d = Delta() d.add_op(Op(timestamp=1, actor="A", idx=0, op_type="graft", target="/x", value=1)) delta_payload = {"ops": d.to_list(), "ops_root": d.ops_root(), "parent_hash": None} cartridge = built_in_cartridges[0] # network_partition priv, pub = generate_keypair() report, manifest = run_cartridge(cartridge, delta_payload, seed=42, signer_key=priv) assert hasattr(report, "passed") # signature present assert "signature" in manifest sig = bytes.fromhex(manifest["signature"]) signed_payload = manifest.get("signed_payload") assert signed_payload is not None ok = verify_signature(pub, signed_payload.encode("utf-8"), sig) assert ok