Spaces:
Paused
Paused
File size: 1,267 Bytes
efeddde | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | from pathlib import Path
from blockchain.blockchain import LocalBlockchain
def test_local_blockchain_lifecycle(tmp_path: Path):
chain_file = tmp_path / "test_chain.json"
chain = LocalBlockchain(chain_path=chain_file)
assert len(chain) == 1
assert chain.get_chain()[0]["index"] == 0
# Add forensic block
evidence = {
"evidence_hash": "a" * 64,
"source_image": "test.jpg",
"match": True
}
block1 = chain.add_block(evidence)
assert block1["index"] == 1
assert len(chain) == 2
assert block1["previous_hash"] == chain.get_chain()[0]["hash"]
# Verify validity
valid, err = chain.is_valid_chain()
assert valid is True
assert err is None
# Search for evidence hash
found = chain.verify_evidence_hash("a" * 64)
assert found is not None
assert found["index"] == 1
def test_local_blockchain_tamper_detection(tmp_path: Path):
chain_file = tmp_path / "tamper_chain.json"
chain = LocalBlockchain(chain_path=chain_file)
chain.add_block({"evidence_hash": "1" * 64})
# Tamper with block data
chain.chain[1]["evidence_record"]["evidence_hash"] = "2" * 64
valid, err = chain.is_valid_chain()
assert valid is False
assert "mismatch" in err.lower()
|