Files
easy-wallet/tests/test_p2pkh.py
Davide Grilli 409669e000 test: add tests/ folder with SecretScan verification links
- Add pytest test suite for all 5 address types (P2PK, P2PKH, P2SH, P2WPKH, P2TR)
- Test output fields, address prefixes per network, key lengths and uniqueness
- Each test file prints the SecretScan URL for manual address verification
- Add pytest to requirements.txt
2026-03-09 11:11:41 +01:00

67 lines
1.9 KiB
Python

import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from src.p2pkh import generate_legacy_address
SECRETSCAN_URL = "https://secretscan.org/Bitcoin?address={}"
NETWORKS = ['mainnet', 'testnet', 'regtest']
def test_p2pkh_fields():
result = generate_legacy_address('mainnet')
assert set(result.keys()) == {'network', 'script_type', 'private_key_hex', 'private_key_wif', 'public_key_hex', 'address'}
def test_p2pkh_script_type():
result = generate_legacy_address('mainnet')
assert result['script_type'] == 'p2pkh'
def test_p2pkh_address_mainnet():
result = generate_legacy_address('mainnet')
assert result['address'].startswith('1')
def test_p2pkh_address_testnet():
result = generate_legacy_address('testnet')
assert result['address'][0] in ('m', 'n')
def test_p2pkh_address_regtest():
result = generate_legacy_address('regtest')
assert result['address'][0] in ('m', 'n')
def test_p2pkh_private_key_length():
result = generate_legacy_address('mainnet')
assert len(result['private_key_hex']) == 64
def test_p2pkh_compressed_pubkey():
result = generate_legacy_address('mainnet', compressed=True)
assert len(result['public_key_hex']) == 66
assert result['public_key_hex'][:2] in ('02', '03')
def test_p2pkh_uncompressed_pubkey():
result = generate_legacy_address('mainnet', compressed=False)
assert len(result['public_key_hex']) == 130
assert result['public_key_hex'][:2] == '04'
def test_p2pkh_unique_addresses():
r1 = generate_legacy_address('mainnet')
r2 = generate_legacy_address('mainnet')
assert r1['address'] != r2['address']
def test_p2pkh_print_secretscan(capsys):
result = generate_legacy_address('mainnet')
url = SECRETSCAN_URL.format(result['address'])
print(f"\n[P2PKH] Address: {result['address']}")
print(f"[P2PKH] Verify on SecretScan: {url}")
captured = capsys.readouterr()
assert 'secretscan.org' in captured.out