cosmicledger-verifiable-off.../tests/test_delta_block.py

41 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, verify_delta_block
def test_export_and_verify_delta_block_with_signature():
dl = DeltaLog()
# add a few payloads
for i in range(4):
dl.add_entry({"v": i})
key = b'unique-test-key-xyz'
block = dl.export_delta_block(since_index=0, signer_key=key)
assert "root" in block
assert "digests" in block
assert "aggregated_sig" in block
assert block["aggregated_sig"] is not None
# verify should succeed with correct key
assert verify_delta_block(block, signer_key=key)
def test_verify_delta_block_tamper_detection():
dl = DeltaLog()
for i in range(3):
dl.add_entry({"v": i})
key = b'another-key-123'
block = dl.export_delta_block(since_index=0, signer_key=key)
# tamper with a digest
if block["digests"]:
block["digests"][0] = ("0" if block["digests"][0][0] != "0" else "1") + block["digests"][0][1:]
assert not verify_delta_block(block, signer_key=key)