addrimport: display token info; TrackingWallet: token import fix

This commit is contained in:
The MMGen Project 2020-06-13 17:42:11 +00:00
commit bb76e1e3fa
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 35 additions and 21 deletions

View file

@ -170,13 +170,14 @@ class EthereumTokenTrackingWallet(EthereumTrackingWallet):
from mmgen.obj import TokenAddr
self.token = TokenAddr(proto,token_addr)
if self.token in self.data['tokens']:
self.decimals = self.get_param('decimals')
self.symbol = self.get_param('symbol')
elif self.importing:
await self.import_token(self.token) # sets self.decimals, self.symbol
else:
raise TokenNotInWallet(f'Specified token {self.token!r} not in wallet!')
if self.token not in self.data['tokens']:
if self.importing:
await self.import_token(self.token)
else:
raise TokenNotInWallet(f'Specified token {self.token!r} not in wallet!')
self.decimals = self.get_param('decimals')
self.symbol = self.get_param('symbol')
proto.tokensym = self.symbol

View file

@ -158,11 +158,15 @@ async def main():
from .tw import TrackingWallet
if opt.token_addr:
proto.tokensym = 'foo' # hack to trigger 'Token' in altcoin_subclass()
tw = await TrackingWallet(
proto = proto,
token_addr = opt.token_addr,
mode = 'i' )
if opt.token or opt.token_addr:
msg(f'Importing for token {tw.token.hl()} ({tw.token.hlc(proto.tokensym)})')
from .rpc import rpc_init
tw.rpc = await rpc_init(proto)

View file

@ -216,8 +216,10 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
('token_addrgen', 'generating token addresses'),
('token_addrimport_badaddr1','importing token addresses (no token address)'),
('token_addrimport_badaddr2','importing token addresses (bad token address)'),
('token_addrimport', 'importing token addresses'),
('token_addrimport_batch','importing token addresses (dummy batch mode)'),
('token_addrimport_addr1','importing token addresses using token address (MM1)'),
('token_addrimport_addr2','importing token addresses using token address (MM2)'),
('token_addrimport_batch','importing token addresses (dummy batch mode) (MM1)'),
('token_addrimport_sym', 'importing token addresses using token symbol (MM2)'),
('bal7', 'the {} balance'.format(coin)),
('token_bal1', 'the {} balance and token balance'.format(coin)),
@ -729,20 +731,27 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
t.req_exit_val = 2
return t
def token_addrimport(self,extra_args=[],expect='3/3'):
for n,r in ('1','11-13'),('2','21-23'):
tk_addr = self.read_from_tmpfile('token_addr'+n).strip()
t = self.addrimport(
ext = f'[{r}]{{}}.regtest.addrs',
expect = expect,
add_args = ['--token-addr='+tk_addr]+extra_args )
t.p.wait()
ok_msg()
t.skip_ok = True
return t
def token_addrimport(self,addr_file,addr_range,expect,extra_args=[]):
token_addr = self.read_from_tmpfile(addr_file).strip()
return self.addrimport(
ext = f'[{addr_range}]{{}}.regtest.addrs',
expect = expect,
add_args = ['--token-addr='+token_addr]+extra_args )
def token_addrimport_addr1(self):
return self.token_addrimport('token_addr1','11-13',expect='3/3')
def token_addrimport_addr2(self):
return self.token_addrimport('token_addr2','21-23',expect='3/3')
def token_addrimport_batch(self):
return self.token_addrimport(extra_args=['--batch'],expect='OK: 3')
return self.token_addrimport('token_addr1','11-13',expect='OK: 3',extra_args=['--batch'])
def token_addrimport_sym(self):
return self.addrimport(
ext = '[21-23]{}.regtest.addrs',
expect = '3/3',
add_args = ['--token=MM2'] )
def bal7(self): return self.bal5()
def token_bal1(self): return self.token_bal(n='1')