Add magic arg parsing for token lookup api
This commit is contained in:
parent
66f94ae694
commit
9637cb61f8
@ -22,7 +22,27 @@ logg = logging.getLogger()
|
||||
|
||||
|
||||
class Api(ApiBase):
|
||||
|
||||
|
||||
@staticmethod
|
||||
def to_v_list(v, n):
|
||||
if isinstance(v, str):
|
||||
vv = v
|
||||
v = []
|
||||
for i in range(n):
|
||||
v.append([vv])
|
||||
elif not isinstance(v, list):
|
||||
raise ValueError('argument must be single string, or list or strings or lists')
|
||||
else:
|
||||
if len(v) != n:
|
||||
raise ValueError('v argument count must match integer n')
|
||||
for i in range(n):
|
||||
if isinstance(v[i], str):
|
||||
v[i] = [v[i]]
|
||||
elif not isinstance(v, list):
|
||||
raise ValueError('proof argument must be single string, or list or strings or lists')
|
||||
|
||||
return v
|
||||
|
||||
|
||||
def default_token(self):
|
||||
s_token = celery.signature(
|
||||
@ -37,12 +57,21 @@ class Api(ApiBase):
|
||||
|
||||
|
||||
def token(self, token_symbol, proof=None):
|
||||
if not isinstance(token_symbol, str):
|
||||
raise ValueError('token symbol must be string')
|
||||
|
||||
return self.tokens([token_symbol], proof=proof)
|
||||
|
||||
|
||||
def tokens(self, token_symbols, proof=None):
|
||||
if isinstance(proof, str):
|
||||
proof = [proof]
|
||||
if not isinstance(token_symbols, list):
|
||||
raise ValueError('token symbols argument must be list')
|
||||
|
||||
if proof == None:
|
||||
logg.debug('looking up tokens without external proof check: {}'.format(','.join(token_symbols)))
|
||||
proof = ''
|
||||
proof = Api.to_v_list(proof, len(token_symbols))
|
||||
|
||||
chain_spec_dict = self.chain_spec.asdict()
|
||||
|
||||
s_token_resolve = celery.signature(
|
||||
|
@ -40,6 +40,61 @@ def test_default_token(
|
||||
assert r['address'] == foo_token
|
||||
|
||||
|
||||
def test_to_v_list():
|
||||
assert Api.to_v_list('foo', 1) == [['foo']]
|
||||
assert Api.to_v_list(['foo'], 1) == [['foo']]
|
||||
assert Api.to_v_list(['foo', 'bar'], 2) == [['foo'], ['bar']]
|
||||
assert Api.to_v_list('foo', 3) == [['foo'], ['foo'], ['foo']]
|
||||
assert Api.to_v_list([['foo'], ['bar']], 2) == [['foo'], ['bar']]
|
||||
with pytest.raises(ValueError):
|
||||
Api.to_v_list([['foo'], ['bar']], 3)
|
||||
with pytest.raises(ValueError):
|
||||
Api.to_v_list(['foo', 'bar'], 3)
|
||||
with pytest.raises(ValueError):
|
||||
Api.to_v_list([['foo'], ['bar'], ['baz']], 2)
|
||||
|
||||
assert Api.to_v_list([
|
||||
['foo'],
|
||||
'bar',
|
||||
['inky', 'pinky', 'blinky', 'clyde'],
|
||||
], 3) == [
|
||||
['foo'],
|
||||
['bar'],
|
||||
['inky', 'pinky', 'blinky', 'clyde'],
|
||||
]
|
||||
|
||||
|
||||
def test_token_single(
|
||||
default_chain_spec,
|
||||
foo_token,
|
||||
bar_token,
|
||||
token_registry,
|
||||
register_tokens,
|
||||
register_lookups,
|
||||
cic_registry,
|
||||
init_database,
|
||||
init_celery_tasks,
|
||||
custodial_roles,
|
||||
foo_token_declaration,
|
||||
bar_token_declaration,
|
||||
celery_session_worker,
|
||||
):
|
||||
|
||||
api = Api(str(default_chain_spec), queue=None, callback_param='foo')
|
||||
|
||||
t = api.token('FOO', proof=None)
|
||||
r = t.get()
|
||||
logg.debug('rr {}'.format(r))
|
||||
assert len(r) == 1
|
||||
assert r[0]['address'] == strip_0x(foo_token)
|
||||
|
||||
|
||||
t = api.token('FOO', proof=foo_token_declaration)
|
||||
r = t.get()
|
||||
assert len(r) == 1
|
||||
assert r[0]['address'] == strip_0x(foo_token)
|
||||
|
||||
|
||||
def test_tokens(
|
||||
default_chain_spec,
|
||||
foo_token,
|
||||
@ -118,3 +173,4 @@ def test_tokens(
|
||||
f.close()
|
||||
assert v == b'\x00'
|
||||
break
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user