37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import sys
|
|
import pathlib
|
|
|
|
# Ensure repository root is on sys.path so tests can import the package
|
|
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1]))
|
|
|
|
from cosmic_ledger.delta import DeltaLog
|
|
from cosmic_ledger.adapter import DeltaBlock, verify_block, verify_entry_inclusion
|
|
|
|
|
|
def test_deltablock_create_and_verify():
|
|
dl = DeltaLog()
|
|
# add a few simple entries
|
|
for i in range(5):
|
|
dl.add_entry({"v": i})
|
|
|
|
key = b'test-key-for-adapter'
|
|
raw_block = dl.export_delta_block(since_index=0, signer_key=key)
|
|
|
|
block = DeltaBlock.from_dict(raw_block)
|
|
|
|
# verify aggregated block signature and structure
|
|
assert block.root == raw_block["root"]
|
|
assert len(block.digests) == len(block.entries)
|
|
assert verify_block(block, signer_key=key)
|
|
|
|
|
|
def test_verify_single_entry_inclusion():
|
|
dl = DeltaLog()
|
|
for i in range(3):
|
|
dl.add_entry({"k": i})
|
|
|
|
block = DeltaBlock.from_dict(dl.export_delta_block(since_index=0))
|
|
# verify inclusion for each entry
|
|
for idx, digest in enumerate(block.digests):
|
|
assert verify_entry_inclusion(digest, block, idx)
|