Files
brk/packages/brk_client/tests/test_hash_prefix.py
T
2026-07-01 17:04:29 +02:00

49 lines
1.7 KiB
Python

import pytest
from brk_client import BrkClient, address_payload_hash_prefix
VECTORS = (
(bytes([0x4E, 0x73]), "58101afa51a1ecfd"),
(bytes(range(20)), "c3327ecb8ae1ff23"),
(bytes(range(32)), "c0186990f026b180"),
(bytes(range(65)), "0d4b77027ae7d700"),
)
def test_address_payload_hash_prefix_vectors():
for payload, expected in VECTORS:
assert address_payload_hash_prefix(payload, 16) == expected
assert BrkClient.address_payload_hash_prefix(payload, 8) == expected[:8]
def test_address_payload_hash_prefix_validation():
with pytest.raises(ValueError, match="non-empty"):
address_payload_hash_prefix(b"", 16)
with pytest.raises(ValueError, match="at most 65"):
address_payload_hash_prefix(bytes(range(66)), 16)
with pytest.raises(ValueError, match="1 to 16"):
address_payload_hash_prefix(b"\x01\x02", 0)
def test_address_payload_hash_prefix_match_validation():
client = BrkClient("http://127.0.0.1:0")
client.get_address_hash_prefix_matches = lambda addr_type, prefix: {
"addr_type": addr_type,
"prefix": prefix,
"truncated": False,
"addresses": [],
}
assert client.get_address_payload_hash_prefix_matches("p2pkh", bytes(range(20)), 8) == {
"addr_type": "p2pkh",
"prefix": "c3327ecb",
"truncated": False,
"addresses": [],
}
with pytest.raises(ValueError, match="p2pkh address payload length 20 bytes"):
client.get_address_payload_hash_prefix_matches("p2pkh", b"\x01\x02", 8)
with pytest.raises(ValueError, match="Unsupported address type"):
client.get_address_payload_hash_prefix_matches("op_return", b"\x01\x02", 8)