114 lines
4.2 KiB
Python
Executable file
114 lines
4.2 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
#
|
|
# MMGen Wallet, a terminal-based cryptocurrency wallet
|
|
# Copyright (C)2013-2026 The MMGen Project <mmgen@tuta.io>
|
|
# Licensed under the GNU General Public License, Version 3:
|
|
# https://www.gnu.org/licenses
|
|
# Public project repositories:
|
|
# https://github.com/mmgen/mmgen-wallet
|
|
# https://gitlab.com/mmgen/mmgen-wallet
|
|
|
|
"""
|
|
test.cmdtest_d.automount_eth: Ethereum automount autosigning tests for the cmdtest.py test suite
|
|
"""
|
|
import os, re
|
|
|
|
from .autosign import CmdTestAutosignThreaded
|
|
from .ethdev import CmdTestEthdev, CmdTestEthdevMethods
|
|
from .include.common import dfl_words_file
|
|
from ..include.common import cfg, joinpath
|
|
|
|
class CmdTestAutosignETH(CmdTestAutosignThreaded, CmdTestEthdev, CmdTestEthdevMethods):
|
|
'automounted transacting operations for Ethereum via ethdev'
|
|
|
|
networks = ('eth', 'etc')
|
|
tmpdir_nums = [59]
|
|
|
|
cmd_group = (
|
|
('setup', f'dev mode tests for coin {cfg.coin} (start daemon)'),
|
|
('addrgen', 'generating addresses'),
|
|
('addrimport', 'importing addresses'),
|
|
('addrimport_devaddr', 'importing the dev address'),
|
|
('addrimport_reth_devaddr','importing the reth dev address'),
|
|
('fund_devaddr', 'funding the dev address'),
|
|
('del_reth_devaddr', 'deleting the reth dev address'),
|
|
('fund_mmgen_addr', 'funding an MMGen address'),
|
|
('create_tx', 'creating a transaction'),
|
|
('run_autosign_setup', 'running ‘autosign setup’'),
|
|
('wait_loop_start', 'starting autosign wait loop'),
|
|
('send_tx', 'sending the transaction'),
|
|
('token_compile1', 'compiling ERC20 token #1'),
|
|
('token_deploy1a', 'deploying ERC20 token #1 (SafeMath)'),
|
|
('token_deploy1b', 'deploying ERC20 token #1 (Owned)'),
|
|
('token_deploy1c', 'deploying ERC20 token #1 (Token)'),
|
|
('tx_status2', 'getting the transaction status'),
|
|
('token_fund_user', 'transferring token funds from dev to user'),
|
|
('token_addrgen', 'generating token addresses'),
|
|
('token_addrimport', 'importing token addresses using token address (MM1)'),
|
|
('token_bal1', f'the {cfg.coin} balance and token balance'),
|
|
('create_token_tx', 'creating a token transaction'),
|
|
('send_token_tx', 'sending a token transaction'),
|
|
('token_bal2', f'the {cfg.coin} balance and token balance'),
|
|
('wait_loop_kill', 'stopping autosign wait loop'),
|
|
('stop', 'stopping daemon'),
|
|
('txview', 'viewing transactions'),
|
|
)
|
|
|
|
def __init__(self, cfg, trunner, cfgs, spawn):
|
|
|
|
self.coins = [cfg.coin.lower()]
|
|
|
|
CmdTestAutosignThreaded.__init__(self, cfg, trunner, cfgs, spawn)
|
|
CmdTestEthdev.__init__(self, cfg, trunner, cfgs, spawn)
|
|
|
|
self.txop_opts = ['--autosign', '--regtest=1', '--quiet']
|
|
|
|
def fund_mmgen_addr(self):
|
|
return self._fund_mmgen_addr(arg='98831F3A:E:1,123.456')
|
|
|
|
def create_tx(self):
|
|
self.mining_delay()
|
|
self.insert_device_online()
|
|
t = self._create_tx(fee='50G', args=['98831F3A:E:11,54.321'], add_opts=self.txop_opts)
|
|
t.read()
|
|
self.remove_device_online()
|
|
return t
|
|
|
|
def run_autosign_setup(self):
|
|
return self.run_setup(mn_type='bip39', mn_file='test/ref/98831F3A.bip39', use_dfl_wallet=None)
|
|
|
|
def send_tx(self):
|
|
self._wait_signed('transaction')
|
|
self.insert_device_online()
|
|
t = self._send_tx(desc='automount transaction', add_opts=self.txop_opts)
|
|
t.read()
|
|
self.remove_device_online()
|
|
return t
|
|
|
|
def token_addrgen(self):
|
|
return self._token_addrgen(mm_idxs=[11], naddrs=3)
|
|
|
|
def token_addrimport(self):
|
|
return self._token_addrimport('token_addr1', '11-13', expect='3/3')
|
|
|
|
async def token_fund_user(self):
|
|
return await self._token_transfer_ops(op='fund_user', mm_idxs=[11])
|
|
|
|
def token_bal1(self):
|
|
return self._token_bal_check(pat=r':E:11\s+1000\s+54\.321\s+')
|
|
|
|
def token_bal2(self):
|
|
return self._token_bal_check(pat=r':E:11\s+998.76544\s+54.318\d+\s+.*:E:12\s+1\.23456\s+')
|
|
|
|
def create_token_tx(self):
|
|
self.insert_device_online()
|
|
t = self._create_token_tx(
|
|
cmd = 'txcreate',
|
|
fee = '50G',
|
|
args = ['98831F3A:E:12,1.23456'],
|
|
add_opts = self.txop_opts)
|
|
t.read()
|
|
self.remove_device_online()
|
|
return t
|
|
|
|
send_token_tx = send_tx
|