44 lines
1.5 KiB
Python
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
|