ut_msg.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python3
  2. """
  3. test.unit_tests_d.ut_msg: message signing unit tests for the MMGen suite
  4. """
  5. import os
  6. from test.include.common import silence,end_silence,restart_test_daemons,stop_test_daemons
  7. from mmgen.opts import opt
  8. from mmgen.util import msg,bmsg,pumsg
  9. from mmgen.protocol import CoinProtocol,init_proto
  10. from mmgen.msg import NewMsg,UnsignedMsg,SignedMsg,SignedOnlineMsg
  11. def get_obj(coin,network):
  12. if coin == 'bch':
  13. addrlists = 'DEADBEEF:C:1-20 98831F3A:C:8,2 A091ABAA:L:111 A091ABAA:C:1'
  14. else:
  15. # A091ABAA = 98831F3A:5S
  16. addrlists = 'DEADBEEF:C:1-20 98831F3A:B:8,2 A091ABAA:S:10-11 A091ABAA:111 A091ABAA:C:1'
  17. return NewMsg(
  18. coin = coin,
  19. network = network,
  20. message = '08/Jun/2021 Bitcoin Law Enacted by El Salvador Legislative Assembly',
  21. addrlists = addrlists )
  22. async def run_test(network_id):
  23. coin,network = CoinProtocol.Base.parse_network_id(network_id)
  24. if not opt.verbose:
  25. silence()
  26. bmsg(f'\nTesting {coin.upper()} {network.upper()}:\n')
  27. restart_test_daemons(network_id)
  28. pumsg('\nTesting data creation:\n')
  29. m = get_obj(coin,network)
  30. tmpdir = os.path.join('test','trash2')
  31. os.makedirs(tmpdir,exist_ok=True)
  32. m.write_to_file(
  33. outdir = tmpdir,
  34. ask_overwrite = False )
  35. pumsg('\nTesting signing:\n')
  36. m = UnsignedMsg( infile = os.path.join(tmpdir,get_obj(coin,network).filename) )
  37. await m.sign(wallet_files=['test/ref/98831F3A.mmwords'])
  38. m = SignedMsg( data=m.__dict__ )
  39. m.write_to_file(
  40. outdir = tmpdir,
  41. ask_overwrite = False )
  42. pumsg('\nTesting display:\n')
  43. m = SignedOnlineMsg( infile = os.path.join(tmpdir,get_obj(coin,network).signed_filename) )
  44. msg(m.format())
  45. pumsg('\nTesting single address display:\n')
  46. msg(m.format('A091ABAA:111'))
  47. pumsg('\nTesting verification:\n')
  48. await m.verify(summary=opt.verbose)
  49. pumsg('\nTesting single address verification:\n')
  50. await m.verify('A091ABAA:111',summary=opt.verbose)
  51. stop_test_daemons(network_id)
  52. msg('\n')
  53. if not opt.verbose:
  54. end_silence()
  55. return True
  56. class unit_tests:
  57. altcoin_deps = ('ltc','bch')
  58. def btc(self,name,ut):
  59. return run_test('btc')
  60. def btc_tn(self,name,ut):
  61. return run_test('btc_tn')
  62. def btc_rt(self,name,ut):
  63. return run_test('btc_rt')
  64. def ltc(self,name,ut):
  65. return run_test('ltc')
  66. def bch(self,name,ut):
  67. return run_test('bch')