mltrail-verifiable-provenan.../tests/test_registry.py

44 lines
1.5 KiB
Python

import json
from mltrail_verifiable_provenance_ledger_for.ledger import Ledger
def test_contract_registry_entry_can_be_stored():
ledger = Ledger()
payload = {
"registry_name": "GoC-Bridge-Registry",
"primitives": [
"Experiment",
"Run",
"Dataset",
"Model",
"Environment",
"EvaluationMetric",
"Policy",
],
"version": "1.0",
}
block = ledger.add_record("ContractRegistryEntry", payload)
# Basic sanity checks about the added block and its data
assert block.index == 1
assert block.data[0]["type"] == "ContractRegistryEntry"
# Ensure the payload is preserved inside the contract record
stored = block.data[0]
assert stored["registry_name"] == payload["registry_name"]
assert stored["primitives"] == payload["primitives"]
def test_delta_sync_basic():
ledger_a = Ledger()
ledger_b = Ledger()
# Add a single registry entry in ledger_a
ledger_a.add_record("ContractRegistryEntry", {"registry_name": "GoC", "version": "1.0"})
# Use ledger_b's head hash as remote head to fetch delta from ledger_a
delta = __import__("mltrail_verifiable_provenance_ledger_for.ledger", fromlist=["delta_sync"]).delta_sync(ledger_a, ledger_b.head_hash())
# Should contain the single block from ledger_a (excluding genesis)
assert isinstance(delta, list)
assert len(delta) == 1
assert delta[0]["index"] == 1