mirror of
https://github.com/basicswap/basicswap.git
synced 2025-11-05 18:38:09 +01:00
tests: Catch when local key is provided to recoverNoScriptTxnWithKey.
This commit is contained in:
@@ -78,12 +78,14 @@ def recoverNoScriptTxnWithKey(self, bid_id: bytes, encoded_key, session=None):
|
|||||||
|
|
||||||
ensure(ci_follower.verifyKey(kbsl), 'Invalid kbsl')
|
ensure(ci_follower.verifyKey(kbsl), 'Invalid kbsl')
|
||||||
ensure(ci_follower.verifyKey(kbsf), 'Invalid kbsf')
|
ensure(ci_follower.verifyKey(kbsf), 'Invalid kbsf')
|
||||||
|
if kbsl == kbsf:
|
||||||
|
raise ValueError('Provided key matches local key')
|
||||||
vkbs = ci_follower.sumKeys(kbsl, kbsf)
|
vkbs = ci_follower.sumKeys(kbsl, kbsf)
|
||||||
|
|
||||||
# Ensure summed key matches the expected pubkey
|
# Ensure summed key matches the expected pubkey
|
||||||
summed_pkbs = ci_follower.getPubkey(vkbs)
|
summed_pkbs = ci_follower.getPubkey(vkbs)
|
||||||
if (summed_pkbs != xmr_swap.pkbs):
|
if (summed_pkbs != xmr_swap.pkbs):
|
||||||
err_msg: str = 'Summed key does not match expected wallet'
|
err_msg: str = 'Summed key does not match expected wallet spend pubkey'
|
||||||
have_pk = summed_pkbs.hex()
|
have_pk = summed_pkbs.hex()
|
||||||
expect_pk = xmr_swap.pkbs.hex()
|
expect_pk = xmr_swap.pkbs.hex()
|
||||||
self.log.error(f'{err_msg}. Got: {have_pk}, Expect: {expect_pk}')
|
self.log.error(f'{err_msg}. Got: {have_pk}, Expect: {expect_pk}')
|
||||||
|
|||||||
@@ -101,12 +101,31 @@ def recover_chain_b_lock_tx(driver, offer_data, offerer_port, bidder_port):
|
|||||||
|
|
||||||
url = f'{offerer_url}/bid/{bid0_id}'
|
url = f'{offerer_url}/bid/{bid0_id}'
|
||||||
driver.get(url)
|
driver.get(url)
|
||||||
|
btn_more_info = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'show_txns')))
|
||||||
|
btn_more_info.click()
|
||||||
|
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'hide_txns')))
|
||||||
|
offerer_localkeyhalf = driver.find_element(By.ID, 'localkeyhalf').text
|
||||||
|
print('Offerer keyhalf', offerer_localkeyhalf)
|
||||||
|
|
||||||
|
print('Trying with the local key in place of remote')
|
||||||
|
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
||||||
|
btn_edit.click()
|
||||||
|
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
||||||
|
kbs_other = driver.find_element(By.ID, 'kbs_other')
|
||||||
|
kbs_other.send_keys(offerer_localkeyhalf)
|
||||||
|
btn_submit.click()
|
||||||
|
|
||||||
|
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
||||||
|
elements = driver.find_elements(By.CLASS_NAME, 'error_msg')
|
||||||
|
expect_err_msg: str = 'Provided key matches local key'
|
||||||
|
assert (any(expect_err_msg in el.text for el in elements))
|
||||||
|
print('Found expected error: ' + expect_err_msg)
|
||||||
|
|
||||||
|
print('Trying with incorrect key')
|
||||||
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
||||||
btn_edit.click()
|
btn_edit.click()
|
||||||
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
||||||
|
|
||||||
kbs_other = driver.find_element(By.ID, 'kbs_other')
|
kbs_other = driver.find_element(By.ID, 'kbs_other')
|
||||||
print('Trying to recover with incorrect key')
|
|
||||||
last_byte = bidder_localkeyhalf[-2:]
|
last_byte = bidder_localkeyhalf[-2:]
|
||||||
invalid_byte = '01' if last_byte == '00' else '00'
|
invalid_byte = '01' if last_byte == '00' else '00'
|
||||||
kbs_other.send_keys(bidder_localkeyhalf[:-2] + invalid_byte)
|
kbs_other.send_keys(bidder_localkeyhalf[:-2] + invalid_byte)
|
||||||
@@ -116,6 +135,9 @@ def recover_chain_b_lock_tx(driver, offer_data, offerer_port, bidder_port):
|
|||||||
elements = driver.find_elements(By.CLASS_NAME, 'error_msg')
|
elements = driver.find_elements(By.CLASS_NAME, 'error_msg')
|
||||||
expect_err_msg: str = 'Summed key does not match expected wallet'
|
expect_err_msg: str = 'Summed key does not match expected wallet'
|
||||||
assert (any(expect_err_msg in el.text for el in elements))
|
assert (any(expect_err_msg in el.text for el in elements))
|
||||||
|
print('Found expected error: ' + expect_err_msg)
|
||||||
|
|
||||||
|
print('Trying with correct key')
|
||||||
btn_edit.click()
|
btn_edit.click()
|
||||||
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
||||||
|
|
||||||
@@ -133,34 +155,31 @@ def recover_chain_b_lock_tx(driver, offer_data, offerer_port, bidder_port):
|
|||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
kbs_other = driver.find_element(By.ID, 'kbs_other')
|
kbs_other = driver.find_element(By.ID, 'kbs_other')
|
||||||
print('Trying to recover with correct key')
|
|
||||||
kbs_other.send_keys(bidder_localkeyhalf)
|
kbs_other.send_keys(bidder_localkeyhalf)
|
||||||
btn_submit.click()
|
btn_submit.click()
|
||||||
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
||||||
elements = driver.find_elements(By.CLASS_NAME, 'infomsg')
|
elements = driver.find_elements(By.CLASS_NAME, 'infomsg')
|
||||||
expect_msg: str = 'Bid edited'
|
expect_msg: str = 'Bid edited'
|
||||||
assert (any(expect_msg in el.text for el in elements))
|
assert (any(expect_msg in el.text for el in elements))
|
||||||
|
print('Found expected message: ' + expect_msg)
|
||||||
|
|
||||||
print('Trying with nodes reversed (should fail as already spent)')
|
print('Trying with nodes reversed (should fail as already spent)') # But should sum to the expected wallet key
|
||||||
url = f'{offerer_url}/bid/{bid0_id}'
|
|
||||||
driver.get(url)
|
|
||||||
btn_more_info = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'show_txns')))
|
|
||||||
btn_more_info.click()
|
|
||||||
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'hide_txns')))
|
|
||||||
offerer_localkeyhalf = driver.find_element(By.ID, 'localkeyhalf').text
|
|
||||||
print('Offerer keyhalf', offerer_localkeyhalf)
|
|
||||||
|
|
||||||
url = f'{bidder_url}/bid/{bid0_id}'
|
url = f'{bidder_url}/bid/{bid0_id}'
|
||||||
driver.get(url)
|
driver.get(url)
|
||||||
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
||||||
btn_edit.click()
|
btn_edit.click()
|
||||||
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
||||||
|
|
||||||
|
driver.get(url)
|
||||||
|
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
||||||
|
btn_edit.click()
|
||||||
|
btn_submit = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'edit_bid_submit')))
|
||||||
|
|
||||||
kbs_other = driver.find_element(By.ID, 'kbs_other')
|
kbs_other = driver.find_element(By.ID, 'kbs_other')
|
||||||
kbs_other.send_keys(offerer_localkeyhalf)
|
kbs_other.send_keys(offerer_localkeyhalf)
|
||||||
btn_submit.click()
|
btn_submit.click()
|
||||||
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
btn_edit = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.NAME, 'edit_bid')))
|
||||||
# in log: "Balance is too low, checking for existing spend"
|
# In log: "Balance is too low, checking for existing spend"
|
||||||
# Should error here, but the code can't tell where the tx was sent, and treats any existing send as correct.
|
# Should error here, but the code can't tell where the tx was sent, and treats any existing send as correct.
|
||||||
elements = driver.find_elements(By.CLASS_NAME, 'infomsg')
|
elements = driver.find_elements(By.CLASS_NAME, 'infomsg')
|
||||||
expect_msg: str = 'Bid edited'
|
expect_msg: str = 'Bid edited'
|
||||||
|
|||||||
Reference in New Issue
Block a user