123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #!/usr/bin/env python3
- """
- test.unit_tests_d.ut_msg: message signing unit tests for the MMGen suite
- """
- import os
- from test.include.common import silence,end_silence,restart_test_daemons,stop_test_daemons
- from mmgen.opts import opt
- from mmgen.util import msg,bmsg,pumsg
- from mmgen.protocol import CoinProtocol
- from mmgen.msg import NewMsg,UnsignedMsg,SignedMsg,SignedOnlineMsg
- def get_obj(coin,network):
- if coin == 'bch':
- addrlists = 'DEADBEEF:C:1-20 98831F3A:C:8,2 A091ABAA:L:111 A091ABAA:C:1'
- else:
- # A091ABAA = 98831F3A:5S
- addrlists = 'DEADBEEF:C:1-20 98831F3A:B:8,2 A091ABAA:S:10-11 A091ABAA:111 A091ABAA:C:1'
- return NewMsg(
- coin = coin,
- network = network,
- message = '08/Jun/2021 Bitcoin Law Enacted by El Salvador Legislative Assembly',
- addrlists = addrlists )
- async def run_test(network_id):
- coin,network = CoinProtocol.Base.parse_network_id(network_id)
- if not opt.verbose:
- silence()
- bmsg(f'\nTesting {coin.upper()} {network.upper()}:\n')
- restart_test_daemons(network_id)
- pumsg('\nTesting data creation:\n')
- m = get_obj(coin,network)
- tmpdir = os.path.join('test','trash2')
- os.makedirs(tmpdir,exist_ok=True)
- m.write_to_file(
- outdir = tmpdir,
- ask_overwrite = False )
- pumsg('\nTesting signing:\n')
- m = UnsignedMsg( infile = os.path.join(tmpdir,get_obj(coin,network).filename) )
- await m.sign(wallet_files=['test/ref/98831F3A.mmwords'])
- m = SignedMsg( data=m.__dict__ )
- m.write_to_file(
- outdir = tmpdir,
- ask_overwrite = False )
- pumsg('\nTesting display:\n')
- m = SignedOnlineMsg( infile = os.path.join(tmpdir,get_obj(coin,network).signed_filename) )
- msg(m.format())
- single_addr = 'A091ABAA:111'
- pumsg('\nTesting single address display:\n')
- msg(m.format(single_addr))
- pumsg('\nTesting verification:\n')
- await m.verify(summary=opt.verbose)
- pumsg('\nTesting single address verification:\n')
- await m.verify(single_addr,summary=opt.verbose)
- pumsg('\nTesting JSON dump for export:\n')
- msg( m.get_json_for_export() )
- pumsg('\nTesting single address JSON dump for export:\n')
- msg( m.get_json_for_export(single_addr) )
- stop_test_daemons(network_id)
- msg('\n')
- if not opt.verbose:
- end_silence()
- return True
- class unit_tests:
- altcoin_deps = ('ltc','bch')
- def btc(self,name,ut):
- return run_test('btc')
- def btc_tn(self,name,ut):
- return run_test('btc_tn')
- def btc_rt(self,name,ut):
- return run_test('btc_rt')
- def ltc(self,name,ut):
- return run_test('ltc')
- def bch(self,name,ut):
- return run_test('bch')
|