Files
easy-wallet/tests/test_p2sh.py

78 lines
2.3 KiB
Python
Raw Normal View History

import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from src.p2sh import generate_p2sh_multisig
SECRETSCAN_URL = "https://secretscan.org/Bitcoin?address={}"
NETWORKS = ['mainnet', 'testnet', 'regtest']
def test_p2sh_fields():
result = generate_p2sh_multisig('mainnet', m=2, n=3)
assert set(result.keys()) == {'network', 'script_type', 'm', 'n', 'redeem_script_hex', 'participants', 'address'}
def test_p2sh_script_type():
result = generate_p2sh_multisig('mainnet', m=2, n=3)
assert result['script_type'] == 'p2sh-multisig'
def test_p2sh_address_mainnet():
result = generate_p2sh_multisig('mainnet', m=2, n=3)
assert result['address'].startswith('3')
def test_p2sh_address_testnet():
result = generate_p2sh_multisig('testnet', m=2, n=3)
assert result['address'].startswith('2')
def test_p2sh_address_regtest():
result = generate_p2sh_multisig('regtest', m=2, n=3)
assert result['address'].startswith('2')
def test_p2sh_participants_count():
result = generate_p2sh_multisig('mainnet', m=2, n=3)
assert len(result['participants']) == 3
assert result['m'] == 2
assert result['n'] == 3
def test_p2sh_participant_fields():
result = generate_p2sh_multisig('mainnet', m=2, n=3)
for p in result['participants']:
assert 'private_key_hex' in p
assert 'private_key_wif' in p
assert 'public_key_hex' in p
assert len(p['private_key_hex']) == 64
def test_p2sh_redeem_script_not_empty():
result = generate_p2sh_multisig('mainnet', m=2, n=3)
assert len(result['redeem_script_hex']) > 0
def test_p2sh_1of1():
result = generate_p2sh_multisig('mainnet', m=1, n=1)
assert result['m'] == 1
assert result['n'] == 1
assert len(result['participants']) == 1
def test_p2sh_unique_addresses():
r1 = generate_p2sh_multisig('mainnet', m=2, n=3)
r2 = generate_p2sh_multisig('mainnet', m=2, n=3)
assert r1['address'] != r2['address']
def test_p2sh_print_secretscan(capsys):
result = generate_p2sh_multisig('mainnet', m=2, n=3)
url = SECRETSCAN_URL.format(result['address'])
print(f"\n[P2SH] Address: {result['address']}")
print(f"[P2SH] Verify on SecretScan: {url}")
captured = capsys.readouterr()
assert 'secretscan.org' in captured.out