mirror of
https://github.com/basicswap/basicswap.git
synced 2024-11-16 15:58:17 +00:00
ui: Use coin tickers as wallet keys in json/wallets
This commit is contained in:
parent
18a444b071
commit
cd5af7032f
15 changed files with 58 additions and 40 deletions
|
@ -5361,11 +5361,12 @@ class BasicSwap(BaseApp):
|
|||
if c not in chainparams:
|
||||
continue
|
||||
if self.coin_clients[c]['connection_type'] == 'rpc':
|
||||
key = chainparams[c]['ticker'] if opts.get('ticker_key', False) else c
|
||||
try:
|
||||
rv[c] = self.getWalletInfo(c)
|
||||
rv[c].update(self.getBlockchainInfo(c))
|
||||
rv[key] = self.getWalletInfo(c)
|
||||
rv[key].update(self.getBlockchainInfo(c))
|
||||
except Exception as ex:
|
||||
rv[c] = {'name': chainparams[c]['name'].capitalize(), 'error': str(ex)}
|
||||
rv[key] = {'name': chainparams[c]['name'].capitalize(), 'error': str(ex)}
|
||||
return rv
|
||||
|
||||
def getCachedWalletsInfo(self, opts=None):
|
||||
|
|
|
@ -93,12 +93,14 @@ def js_wallets(self, url_split, post_string, is_json):
|
|||
cmd = url_split[4]
|
||||
if cmd == 'withdraw':
|
||||
return bytes(json.dumps(withdraw_coin(swap_client, coin_type, post_string, is_json)), 'UTF-8')
|
||||
if cmd == 'nextdepositaddr':
|
||||
return bytes(json.dumps(swap_client.cacheNewAddressForCoin(coin_type)), 'UTF-8')
|
||||
raise ValueError('Unknown command')
|
||||
|
||||
rv = swap_client.getWalletInfo(coin_type)
|
||||
rv.update(swap_client.getBlockchainInfo(coin_type))
|
||||
return bytes(json.dumps(rv), 'UTF-8')
|
||||
return bytes(json.dumps(self.server.swap_client.getWalletsInfo()), 'UTF-8')
|
||||
return bytes(json.dumps(self.server.swap_client.getWalletsInfo({'ticker_key': True})), 'UTF-8')
|
||||
|
||||
|
||||
def js_offers(self, url_split, post_string, is_json, sent=False):
|
||||
|
|
|
@ -213,7 +213,7 @@ def read_json_api(port, path=None):
|
|||
url = f'http://127.0.0.1:{port}/json'
|
||||
if path is not None:
|
||||
url += '/' + path
|
||||
return json.loads(urlopen(url).read())
|
||||
return json.loads(urlopen(url, timeout=30).read())
|
||||
|
||||
|
||||
def post_json_api(port, path, json_data):
|
||||
|
|
|
@ -284,7 +284,7 @@ class XmrTestBase(TestBase):
|
|||
raise ValueError('Test stopped.')
|
||||
try:
|
||||
wallets = json.loads(urlopen('http://127.0.0.1:12701/json/wallets').read())
|
||||
return wallets['6']['main_address']
|
||||
return wallets['XMR']['main_address']
|
||||
except Exception as e:
|
||||
print('Waiting for main address {}'.format(str(e)))
|
||||
self.delay_event.wait(1)
|
||||
|
@ -309,7 +309,7 @@ class XmrTestBase(TestBase):
|
|||
raise ValueError('Test stopped.')
|
||||
try:
|
||||
wallets = json.loads(urlopen('http://127.0.0.1:12701/json/wallets').read())
|
||||
particl_blocks = wallets['1']['blocks']
|
||||
particl_blocks = wallets['PART']['blocks']
|
||||
print('particl_blocks', particl_blocks)
|
||||
if particl_blocks >= num_blocks:
|
||||
break
|
||||
|
|
|
@ -82,19 +82,19 @@ class Test(unittest.TestCase):
|
|||
waitForServer(self.delay_event, 12700)
|
||||
|
||||
wallets_0 = read_json_api(12700, 'wallets')
|
||||
assert(wallets_0['1']['expected_seed'] is True)
|
||||
assert(wallets_0['6']['expected_seed'] is True)
|
||||
assert(wallets_0['PART']['expected_seed'] is True)
|
||||
assert(wallets_0['XMR']['expected_seed'] is True)
|
||||
|
||||
waitForServer(self.delay_event, 12701)
|
||||
wallets_1 = read_json_api(12701, 'wallets')
|
||||
|
||||
assert(wallets_0['1']['expected_seed'] is True)
|
||||
assert(wallets_1['6']['expected_seed'] is True)
|
||||
assert(wallets_0['PART']['expected_seed'] is True)
|
||||
assert(wallets_1['XMR']['expected_seed'] is True)
|
||||
|
||||
# TODO: Check other coins
|
||||
|
||||
assert(wallets_0['1']['deposit_address'] == wallets_1['1']['deposit_address'])
|
||||
assert(wallets_0['6']['deposit_address'] == wallets_1['6']['deposit_address'])
|
||||
assert(wallets_0['PART']['deposit_address'] == wallets_1['1']['deposit_address'])
|
||||
assert(wallets_0['XMR']['deposit_address'] == wallets_1['6']['deposit_address'])
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
|
|
|
@ -164,12 +164,23 @@ class Test(TestBase):
|
|||
processes[-1].start()
|
||||
waitForServer(self.delay_event, 12703)
|
||||
|
||||
# TODO: Try detect past swaps
|
||||
self.wait_seconds(5)
|
||||
|
||||
ltc_orig = read_json_api(12700, 'wallets/ltc')
|
||||
# TODO: Attempt to detect past swaps
|
||||
|
||||
ltc_original = read_json_api(12700, 'wallets/ltc')
|
||||
ltc_restored = read_json_api(12703, 'wallets/ltc')
|
||||
assert(float(ltc_orig['balance']) + float(ltc_orig['unconfirmed']) > 0.0)
|
||||
assert(float(ltc_orig['balance']) + float(ltc_orig['unconfirmed']) == float(ltc_restored['balance']) + float(ltc_restored['unconfirmed']))
|
||||
assert(float(ltc_original['balance']) + float(ltc_original['unconfirmed']) > 0.0)
|
||||
assert(float(ltc_original['balance']) + float(ltc_original['unconfirmed']) == float(ltc_restored['balance']) + float(ltc_restored['unconfirmed']))
|
||||
|
||||
wallets_original = read_json_api(12700, 'wallets')
|
||||
# TODO: After restoring a new deposit address should be generated, should be automated
|
||||
# Swaps should use a new key path, not the external path
|
||||
next_addr = read_json_api(12703, 'wallets/part/nextdepositaddr')
|
||||
next_addr = read_json_api(12703, 'wallets/part/nextdepositaddr')
|
||||
wallets_restored = read_json_api(12703, 'wallets')
|
||||
for k, w in wallets_original.items():
|
||||
assert(w['deposit_address'] == wallets_restored[k]['deposit_address'])
|
||||
|
||||
logging.info('Test passed.')
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ class Test(unittest.TestCase):
|
|||
|
||||
wallets = read_json_api(UI_PORT + 1, 'wallets')
|
||||
|
||||
self.xmr_addr = wallets['6']['main_address']
|
||||
self.xmr_addr = wallets['XMR']['main_address']
|
||||
num_blocks = 100
|
||||
if callrpc_xmr_na(XMR_BASE_RPC_PORT + 1, 'get_block_count')['count'] < num_blocks:
|
||||
logging.info('Mining {} Monero blocks to {}.'.format(num_blocks, self.xmr_addr))
|
||||
|
|
|
@ -51,10 +51,10 @@ class Test(BaseTest):
|
|||
super(Test, cls).tearDownClass()
|
||||
|
||||
def getBalance(self, js_wallets):
|
||||
return float(js_wallets[str(int(self.test_coin_from))]['balance']) + float(js_wallets[str(int(self.test_coin_from))]['unconfirmed'])
|
||||
return float(js_wallets[self.test_coin_from.name]['balance']) + float(js_wallets[self.test_coin_from.name]['unconfirmed'])
|
||||
|
||||
def getXmrBalance(self, js_wallets):
|
||||
return float(js_wallets[str(int(Coins.XMR))]['unconfirmed']) + float(js_wallets[str(int(Coins.XMR))]['balance'])
|
||||
return float(js_wallets[Coins.XMR.name]['unconfirmed']) + float(js_wallets[Coins.XMR.name]['balance'])
|
||||
|
||||
def test_01_full_swap(self):
|
||||
logging.info('---------- Test {} to XMR'.format(str(self.test_coin_from)))
|
||||
|
|
|
@ -72,10 +72,10 @@ class Test(BaseTest):
|
|||
super(Test, cls).tearDownClass()
|
||||
|
||||
def getBalance(self, js_wallets):
|
||||
return float(js_wallets[str(int(self.test_coin_from))]['balance']) + float(js_wallets[str(int(self.test_coin_from))]['unconfirmed'])
|
||||
return float(js_wallets[self.test_coin_from.name]['balance']) + float(js_wallets[self.test_coin_from.name]['unconfirmed'])
|
||||
|
||||
def getXmrBalance(self, js_wallets):
|
||||
return float(js_wallets[str(int(Coins.XMR))]['unconfirmed']) + float(js_wallets[str(int(Coins.XMR))]['balance'])
|
||||
return float(js_wallets[Coins.XMR.name]['unconfirmed']) + float(js_wallets[Coins.XMR.name]['balance'])
|
||||
|
||||
def test_01_full_swap(self):
|
||||
logging.info('---------- Test {} to XMR'.format(str(self.test_coin_from)))
|
||||
|
|
|
@ -64,10 +64,10 @@ class Test(BaseTest):
|
|||
node0_blind_before = js_0['blind_balance'] + js_0['blind_unconfirmed']
|
||||
|
||||
def getBalance(self, js_wallets):
|
||||
return float(js_wallets[str(int(Coins.PART))]['blind_balance']) + float(js_wallets[str(int(Coins.PART))]['blind_unconfirmed'])
|
||||
return float(js_wallets[Coins.PART.name]['blind_balance']) + float(js_wallets[Coins.PART.name]['blind_unconfirmed'])
|
||||
|
||||
def getXmrBalance(self, js_wallets):
|
||||
return float(js_wallets[str(int(Coins.XMR))]['unconfirmed']) + float(js_wallets[str(int(Coins.XMR))]['balance'])
|
||||
return float(js_wallets[Coins.XMR.name]['unconfirmed']) + float(js_wallets[Coins.XMR.name]['balance'])
|
||||
|
||||
def test_01_part_xmr(self):
|
||||
logging.info('---------- Test PARTct to XMR')
|
||||
|
|
|
@ -104,7 +104,7 @@ class Test(unittest.TestCase):
|
|||
|
||||
data = {
|
||||
'addr_from': '-1',
|
||||
'coin_from': '1',
|
||||
'coin_from': 'PART',
|
||||
'coin_to': '2',
|
||||
'amt_from': '1',
|
||||
'amt_to': '1',
|
||||
|
|
|
@ -29,6 +29,9 @@ from basicswap.basicswap import (
|
|||
from basicswap.basicswap_util import (
|
||||
TxLockTypes,
|
||||
)
|
||||
from basicswap.chainparams import (
|
||||
chainparams,
|
||||
)
|
||||
from basicswap.util import (
|
||||
COIN,
|
||||
make_int,
|
||||
|
@ -83,7 +86,8 @@ class Test(BaseTest):
|
|||
|
||||
def getBalance(self, js_wallets, coin_type):
|
||||
ci = self.swap_clients[0].ci(coin_type)
|
||||
return ci.make_int(float(js_wallets[str(int(coin_type))]['balance']) + float(js_wallets[str(int(coin_type))]['unconfirmed']))
|
||||
ticker = chainparams[coin_type]['ticker']
|
||||
return ci.make_int(float(js_wallets[ticker]['balance']) + float(js_wallets[ticker]['unconfirmed']))
|
||||
|
||||
def test_001_js_coins(self):
|
||||
js_coins = read_json_api(1800, 'coins')
|
||||
|
@ -395,7 +399,7 @@ class Test(BaseTest):
|
|||
|
||||
ltc_addr = callnoderpc(0, 'getnewaddress', ['Withdrawal test', 'legacy'], base_rpc_port=LTC_BASE_RPC_PORT)
|
||||
wallets0 = read_json_api(TEST_HTTP_PORT + 0, 'wallets')
|
||||
assert(float(wallets0['3']['balance']) > 100)
|
||||
assert(float(wallets0['LTC']['balance']) > 100)
|
||||
|
||||
post_json = {
|
||||
'value': 100,
|
||||
|
|
|
@ -555,8 +555,8 @@ class Test(BaseTest):
|
|||
swap_clients = self.swap_clients
|
||||
|
||||
js_1 = read_json_api(1801, 'wallets')
|
||||
assert(make_int(js_1[str(int(Coins.XMR))]['balance'], scale=12) > 0)
|
||||
assert(make_int(js_1[str(int(Coins.XMR))]['unconfirmed'], scale=12) > 0)
|
||||
assert(make_int(js_1[Coins.XMR.name]['balance'], scale=12) > 0)
|
||||
assert(make_int(js_1[Coins.XMR.name]['unconfirmed'], scale=12) > 0)
|
||||
|
||||
offer_id = swap_clients[0].postOffer(Coins.PART, Coins.XMR, 100 * COIN, 0.11 * XMR_COIN, 100 * COIN, SwapTypes.XMR_SWAP)
|
||||
wait_for_offer(test_delay_event, swap_clients[1], offer_id)
|
||||
|
@ -577,7 +577,7 @@ class Test(BaseTest):
|
|||
wait_for_bid(test_delay_event, swap_clients[1], bid_id, BidStates.SWAP_COMPLETED, sent=True)
|
||||
|
||||
js_0_end = read_json_api(1800, 'wallets')
|
||||
end_xmr = float(js_0_end['6']['balance']) + float(js_0_end['6']['unconfirmed'])
|
||||
end_xmr = float(js_0_end['XMR']['balance']) + float(js_0_end['XMR']['unconfirmed'])
|
||||
assert(end_xmr > 10.9 and end_xmr < 11.0)
|
||||
|
||||
bid_id_hex = bid_id.hex()
|
||||
|
@ -861,7 +861,7 @@ class Test(BaseTest):
|
|||
|
||||
js_w0_after = read_json_api(1800, 'wallets')
|
||||
js_w1_after = read_json_api(1801, 'wallets')
|
||||
assert(make_int(js_w1_after['2']['balance'], scale=8, r=1) - (make_int(js_w1_before['2']['balance'], scale=8, r=1) + amt_1) < 1000)
|
||||
assert(make_int(js_w1_after['BTC']['balance'], scale=8, r=1) - (make_int(js_w1_before['BTC']['balance'], scale=8, r=1) + amt_1) < 1000)
|
||||
|
||||
def test_07_revoke_offer(self):
|
||||
logging.info('---------- Test offer revocaction')
|
||||
|
@ -877,10 +877,10 @@ class Test(BaseTest):
|
|||
logging.info('---------- Test XMR withdrawals')
|
||||
swap_clients = self.swap_clients
|
||||
js_0 = read_json_api(1800, 'wallets')
|
||||
address_to = js_0[str(int(Coins.XMR))]['deposit_address']
|
||||
address_to = js_0[Coins.XMR.name]['deposit_address']
|
||||
|
||||
js_1 = read_json_api(1801, 'wallets')
|
||||
assert(float(js_1[str(int(Coins.XMR))]['balance']) > 0.0)
|
||||
assert(float(js_1[Coins.XMR.name]['balance']) > 0.0)
|
||||
|
||||
swap_clients[1].withdrawCoin(Coins.XMR, 1.1, address_to, False)
|
||||
|
||||
|
@ -1113,10 +1113,10 @@ class Test(BaseTest):
|
|||
pause_event.clear()
|
||||
|
||||
js_0 = read_json_api(1800, 'wallets')
|
||||
address_to = js_0[str(int(Coins.XMR))]['deposit_address']
|
||||
address_to = js_0[Coins.XMR.name]['deposit_address']
|
||||
|
||||
wallets1 = read_json_api(TEST_HTTP_PORT + 1, 'wallets')
|
||||
xmr_total = float(wallets1[str(int(Coins.XMR))]['balance'])
|
||||
xmr_total = float(wallets1[Coins.XMR.name]['balance'])
|
||||
assert(xmr_total > 10)
|
||||
|
||||
post_json = {
|
||||
|
|
|
@ -50,12 +50,12 @@ class Test(XmrTestBase):
|
|||
waitForServer(self.delay_event, 12700)
|
||||
waitForServer(self.delay_event, 12701)
|
||||
wallets1 = read_json_api(12701, 'wallets')
|
||||
assert(float(wallets1['6']['balance']) > 0.0)
|
||||
assert(float(wallets1['XMR']['balance']) > 0.0)
|
||||
|
||||
offer_data = {
|
||||
'addr_from': -1,
|
||||
'coin_from': 1,
|
||||
'coin_to': 6,
|
||||
'coin_from': 'PART',
|
||||
'coin_to': 'XMR',
|
||||
'amt_from': 1,
|
||||
'amt_to': 1,
|
||||
'lockhrs': 24,
|
||||
|
@ -83,7 +83,7 @@ class Test(XmrTestBase):
|
|||
offer0 = offers[0]
|
||||
|
||||
post_data = {
|
||||
'coin_from': '1'
|
||||
'coin_from': 'PART'
|
||||
}
|
||||
test_post_offers = json.loads(urlopen('http://127.0.0.1:12701/json/offers', data=parse.urlencode(post_data).encode()).read())
|
||||
assert(len(test_post_offers) == 2)
|
||||
|
|
|
@ -46,7 +46,7 @@ class Test(XmrTestBase):
|
|||
waitForServer(self.delay_event, 12700)
|
||||
waitForServer(self.delay_event, 12701)
|
||||
wallets1 = read_json_api(12701, 'wallets')
|
||||
assert(float(wallets1['6']['balance']) > 0.0)
|
||||
assert(float(wallets1['XMR']['balance']) > 0.0)
|
||||
|
||||
data = {
|
||||
'addr_from': '-1',
|
||||
|
|
Loading…
Reference in a new issue