Add test case from SomberNight
This commit is contained in:
parent
b100b5f5c8
commit
6728f50dae
1
testing/data/snight-example.psbt
Normal file
1
testing/data/snight-example.psbt
Normal file
@ -0,0 +1 @@
|
||||
70736274ff0100550100000001b5969362c2ff9bfa1031ff20d12302a4044fa733b5404a07fd756b14eb0db0230100000000fdffffff01ac840100000000001976a914ed6fe40bbb27f098c1bc4d80d892d6bc0dcdc58088ac0402160000010122a0860100000000001976a914585aaff9ce51eea405a86d2c883fb6bd2a274d7f88ac220603511e0b8cc9411c2faf7427470b3e440de41f2f3a1e6c1843082265f3bc47cab5181907f0462c000080010000800000008000000000000000000000
|
||||
@ -766,5 +766,41 @@ def test_sign_multisig_partial_fail(start_sign, end_sign):
|
||||
signed = end_sign(accept=True)
|
||||
assert 'looks completely signed' in str(ee)
|
||||
|
||||
def test_sign_wutxo(start_sign, set_seed_words, end_sign, cap_story, sim_exec, sim_execfile):
|
||||
|
||||
# Example from SomberNight: we can sign it, but signature won't be accepted by
|
||||
# network because the PSBT lies about the UTXO amount and tries to give away to miners,
|
||||
# as overly-large fee.
|
||||
|
||||
set_seed_words('fault lava rice chest uncle exclude power tornado catalog stool'
|
||||
' swear rival sun aspect oyster deer pepper exchange scrap toward'
|
||||
' mix second world shaft')
|
||||
|
||||
in_psbt = a2b_hex(open('data/snight-example.psbt', 'rb').read()[:-1])
|
||||
|
||||
for fin in (False, True):
|
||||
start_sign(in_psbt, finalize=fin)
|
||||
|
||||
time.sleep(.1)
|
||||
_, story = cap_story()
|
||||
|
||||
#print(story)
|
||||
|
||||
assert 'Network fee:\n0.00000500 XTN' in story
|
||||
|
||||
ex = dict( had_witness=False, num_inputs=1, num_outputs=1, sw_inputs=[True],
|
||||
miner_fee=500, warnings_expected=0,
|
||||
lock_time=1442308, total_value_out=99500,
|
||||
total_value_in=100000)
|
||||
|
||||
# check we understood it right
|
||||
rv= sim_exec('import main; main.EXPECT = %r; ' % ex)
|
||||
if rv: pytest.fail(rv)
|
||||
rv = sim_execfile('devtest/check_decode.py')
|
||||
if rv: pytest.fail(rv)
|
||||
|
||||
signed = end_sign(True, finalize=fin)
|
||||
|
||||
open('debug/sn-signed.'+ ('txn' if fin else 'psbt'), 'wb').write(signed)
|
||||
|
||||
# EOF
|
||||
|
||||
Loading…
Reference in New Issue
Block a user