mirror of
https://github.com/basicswap/basicswap.git
synced 2025-01-31 23:05:55 +00:00
Test that the initial lock tx can be funded before posting an offer.
Some checks are pending
ci / ci (3.12) (push) Waiting to run
Some checks are pending
ci / ci (3.12) (push) Waiting to run
This commit is contained in:
parent
bf6d07a726
commit
73ab5e7391
2 changed files with 76 additions and 1 deletions
|
@ -2121,8 +2121,15 @@ class BasicSwap(BaseApp):
|
||||||
ci_from.ensureFunds(msg_buf.amount_from)
|
ci_from.ensureFunds(msg_buf.amount_from)
|
||||||
else:
|
else:
|
||||||
proof_of_funds_hash = getOfferProofOfFundsHash(msg_buf, offer_addr)
|
proof_of_funds_hash = getOfferProofOfFundsHash(msg_buf, offer_addr)
|
||||||
|
ensure_balance: int = int(amount)
|
||||||
|
# If a prefunded txn is not used, check that the wallet balance can cover the tx fee.
|
||||||
|
if "prefunded_itx" not in extra_options:
|
||||||
|
pi = self.pi(SwapTypes.XMR_SWAP)
|
||||||
|
_ = pi.getFundedInitiateTxTemplate(ci_from, ensure_balance, False)
|
||||||
|
# TODO: Save the prefunded tx so the fee can't change, complicates multiple offers at the same time.
|
||||||
|
|
||||||
proof_addr, proof_sig, proof_utxos = self.getProofOfFunds(
|
proof_addr, proof_sig, proof_utxos = self.getProofOfFunds(
|
||||||
coin_from_t, int(amount), proof_of_funds_hash
|
coin_from_t, ensure_balance, proof_of_funds_hash
|
||||||
)
|
)
|
||||||
# TODO: For now proof_of_funds is just a client side check, may need to be sent with offers in future however.
|
# TODO: For now proof_of_funds is just a client side check, may need to be sent with offers in future however.
|
||||||
|
|
||||||
|
|
|
@ -1738,6 +1738,7 @@ class Test(BaseTest):
|
||||||
def test_05_btc_xmr(self):
|
def test_05_btc_xmr(self):
|
||||||
logging.info("---------- Test BTC to XMR")
|
logging.info("---------- Test BTC to XMR")
|
||||||
swap_clients = self.swap_clients
|
swap_clients = self.swap_clients
|
||||||
|
|
||||||
offer_id = swap_clients[0].postOffer(
|
offer_id = swap_clients[0].postOffer(
|
||||||
Coins.BTC,
|
Coins.BTC,
|
||||||
Coins.XMR,
|
Coins.XMR,
|
||||||
|
@ -1784,6 +1785,73 @@ class Test(BaseTest):
|
||||||
|
|
||||||
swap_clients[1].ci(Coins.XMR).setFeePriority(0)
|
swap_clients[1].ci(Coins.XMR).setFeePriority(0)
|
||||||
|
|
||||||
|
def test_05b_btc_xmr_withfee(self):
|
||||||
|
logging.info("---------- Test BTC to XMR")
|
||||||
|
swap_clients = self.swap_clients
|
||||||
|
|
||||||
|
self.prepare_balance(Coins.BTC, 100.0, 1801, 1800)
|
||||||
|
self.prepare_balance(Coins.XMR, 20.0, 1800, 1801)
|
||||||
|
js_w1_before = read_json_api(1801, "wallets")
|
||||||
|
ci1_btc = swap_clients[1].ci(Coins.BTC)
|
||||||
|
btc_total = ci1_btc.make_int(js_w1_before["BTC"]["balance"]) + ci1_btc.make_int(js_w1_before["BTC"]["unconfirmed"])
|
||||||
|
|
||||||
|
try:
|
||||||
|
offer_id = swap_clients[1].postOffer(
|
||||||
|
Coins.BTC,
|
||||||
|
Coins.XMR,
|
||||||
|
btc_total,
|
||||||
|
0,
|
||||||
|
10 * COIN,
|
||||||
|
SwapTypes.XMR_SWAP,
|
||||||
|
extra_options={"amount_to": 10 * XMR_COIN}
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
assert "Insufficient funds" in str(e)
|
||||||
|
else:
|
||||||
|
assert False, "Should fail"
|
||||||
|
|
||||||
|
offer_id = swap_clients[1].postOffer(
|
||||||
|
Coins.BTC,
|
||||||
|
Coins.XMR,
|
||||||
|
btc_total - 1 * COIN,
|
||||||
|
0,
|
||||||
|
10 * COIN,
|
||||||
|
SwapTypes.XMR_SWAP,
|
||||||
|
extra_options={"amount_to": 10 * XMR_COIN}
|
||||||
|
)
|
||||||
|
|
||||||
|
wait_for_offer(test_delay_event, swap_clients[0], offer_id)
|
||||||
|
offers = swap_clients[0].listOffers(filters={"offer_id": offer_id})
|
||||||
|
offer = offers[0]
|
||||||
|
|
||||||
|
swap_clients[0].ci(Coins.XMR).setFeePriority(3)
|
||||||
|
|
||||||
|
bid_id = swap_clients[0].postXmrBid(offer_id, offer.amount_from)
|
||||||
|
|
||||||
|
wait_for_bid(
|
||||||
|
test_delay_event,
|
||||||
|
swap_clients[1],
|
||||||
|
bid_id,
|
||||||
|
BidStates.BID_RECEIVED,
|
||||||
|
wait_for=(self.extra_wait_time + 40),
|
||||||
|
)
|
||||||
|
swap_clients[1].acceptXmrBid(bid_id)
|
||||||
|
|
||||||
|
wait_for_bid(
|
||||||
|
test_delay_event,
|
||||||
|
swap_clients[1],
|
||||||
|
bid_id,
|
||||||
|
BidStates.SWAP_COMPLETED,
|
||||||
|
wait_for=180,
|
||||||
|
)
|
||||||
|
wait_for_bid(
|
||||||
|
test_delay_event,
|
||||||
|
swap_clients[0],
|
||||||
|
bid_id,
|
||||||
|
BidStates.SWAP_COMPLETED,
|
||||||
|
sent=True,
|
||||||
|
)
|
||||||
|
|
||||||
def test_06_multiple_swaps(self):
|
def test_06_multiple_swaps(self):
|
||||||
logging.info("---------- Test Multiple concurrent swaps")
|
logging.info("---------- Test Multiple concurrent swaps")
|
||||||
swap_clients = self.swap_clients
|
swap_clients = self.swap_clients
|
||||||
|
|
Loading…
Reference in a new issue