faceid / tests /test_blockchain.py
rishik1111's picture
feat: complete face-chain biometric forensic and dual-layer blockchain pipeline
efeddde
Raw History Blame Contribute Delete
1.27 kB
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()