test fixes

This commit is contained in:
scgbckbone 2024-06-26 09:04:03 +02:00 committed by doc-hex
parent 34ae8b2bb0
commit 5e37125bd8
6 changed files with 55 additions and 27 deletions

View File

@ -101,7 +101,7 @@ def _clone(source, target):
cmd = lambda a: f"RV.write(repr(settings.get('{a}', {None!r})))"
nfc_val = _sim_exec(device, cmd('nfc'))
vdisk_val = _sim_exec(device, cmd('vidsk'))
assert nfc_val == vdisk_val == '0'
assert not eval(nfc_val) and not eval(vdisk_val)
sim_target.stop()

View File

@ -82,6 +82,7 @@ def _remap_pin(pin, key_map):
def _login(device, is_Q, pin, scrambled=False, mk4_kbtn=None, num_failed=None):
orig_pin = pin
time.sleep(.1)
scr = _cap_screen(device)
if num_failed:
assert f"{num_failed} failures, {13-num_failed} tries left" in scr
@ -423,7 +424,7 @@ def test_login_integration(request, nick, randomize, login_ctdwn, kill_btn, kill
if kill_btn and is_Q: # cannot use kbtn while nickname is show on Mk4
# lets kill here while nickname is shown
_need_keypress(device, kill_btn)
time.sleep(.1)
# now we MUST be dead
with pytest.raises(Exception):
_press_select(device, is_Q, timeout=1000)
@ -436,6 +437,7 @@ def test_login_integration(request, nick, randomize, login_ctdwn, kill_btn, kill
if kill_btn and kill_when and is_Q:
# kill it before even trying to insert any PIN (not possible on Mk4)
_need_keypress(device, kill_btn)
time.sleep(.1)
with pytest.raises(Exception):
_press_select(device, is_Q, timeout=1000)
sim.stop()
@ -457,6 +459,7 @@ def test_login_integration(request, nick, randomize, login_ctdwn, kill_btn, kill
time.sleep(secs + 1)
if kill_btn and not kill_when and is_Q:
_need_keypress(device, kill_btn)
time.sleep(.1)
with pytest.raises(Exception):
_press_select(device, is_Q, timeout=1000)
sim.stop()

View File

@ -1440,7 +1440,7 @@ def test_home_menu_xfp(goto_home, pick_menu_item, press_select, cap_story, cap_m
if "Forces display of XFP" in story:
press_select()
pick_menu_item("Always Show")
time.sleep(.1)
time.sleep(.3)
m = cap_menu()
assert m[1] == "Ready To Sign"
assert m[0] == "<" + xfp2str(settings_get("xfp")) + ">"
@ -1451,13 +1451,13 @@ def test_home_menu_xfp(goto_home, pick_menu_item, press_select, cap_story, cap_m
need_keypress("6") # skip words
press_select()
press_select()
time.sleep(.1)
time.sleep(.3)
m = cap_menu()
assert m[1] == "Ready To Sign"
assert m[0] == "[" + xfp2str(settings_get("xfp")) + "]"
pick_menu_item("Restore Master")
press_select()
time.sleep(.1)
time.sleep(.3)
m = cap_menu()
assert m[1] == "Ready To Sign"
assert m[0] == "<" + xfp2str(settings_get("xfp")) + ">"
@ -1469,7 +1469,7 @@ def test_home_menu_xfp(goto_home, pick_menu_item, press_select, cap_story, cap_m
if "Forces display of XFP" in story:
press_select()
pick_menu_item("Only Tmp")
time.sleep(.1)
time.sleep(.3)
m = cap_menu()
assert m[0] == "Ready To Sign"

View File

@ -2821,9 +2821,9 @@ def test_multisig_name_validation(microsd_path, offer_ms_import):
def test_multisig_deriv_path_migration(settings_set, clear_ms, import_ms_wallet,
press_select, settings_get, make_multisig,
press_cancel, settings_get, make_multisig,
goto_home, start_sign, cap_story, end_sign,
pick_menu_item, cap_menu, press_cancel):
pick_menu_item, cap_menu):
# this test case simulates multisig wallets imported to CC before 5.3.0
# release; these wallets, saved in user settings, still have "'" in derivation
# paths; 5.3.1 firmware implements migration to "h" in MultisigWallet.deserialize
@ -2833,13 +2833,14 @@ def test_multisig_deriv_path_migration(settings_set, clear_ms, import_ms_wallet,
deriv, text_a_fmt = ("m/48h/1h/0h/2h/{idx}", 'p2wsh')
keys = make_multisig(2, 3, unique=1, deriv=deriv)
derivs = [deriv.format(idx=i) for i in range(3)]
import_ms_wallet(2, 3, accept=1, keys=keys, name="ms1",
import_ms_wallet(2, 3, accept=True, keys=keys, name="ms1",
derivs=derivs, addr_fmt=text_a_fmt)
press_select()
import_ms_wallet(3, 5, name="ms2", addr_fmt='p2wsh-p2sh')
press_select()
ms = settings_get("multisig")
time.sleep(.1)
import_ms_wallet(3, 5, name="ms2", addr_fmt='p2wsh-p2sh', accept=True)
time.sleep(.1)
ms = settings_get("multisig")
pths0 = ms[0][3]["d"]
new_pths0 = [p.replace("h", "'") for p in pths0]
ms[0][3]["d"] = new_pths0

View File

@ -832,7 +832,7 @@ def test_sign_wutxo(start_sign, set_seed_words, end_sign, cap_story, sim_exec, s
#print(story)
assert 'Network fee:\n0.00000500 XTN' in story
assert 'Network fee 0.00000500 XTN' in story
# check we understood it right
ex = dict( had_witness=False, num_inputs=1, num_outputs=1, sw_inputs=[None],

View File

@ -8,6 +8,30 @@ from mnemonic import Mnemonic
from bip32 import BIP32Node
@pytest.fixture
def enable_hw_ux(pick_menu_item, cap_story, press_select, goto_home):
def doit(way):
pick_menu_item("Settings")
pick_menu_item("Hardware On/Off")
if way == "vdisk":
pick_menu_item("Virtual Disk")
_, story = cap_story()
if "emulate a virtual disk drive" in story:
press_select()
pick_menu_item("Enable")
elif way == "nfc":
pick_menu_item("NFC Sharing")
_, story = cap_story()
if "(Near Field Communications)" in story:
press_select()
pick_menu_item("Enable NFC")
else:
raise RuntimeError("TODO")
goto_home()
return doit
def test_get_secrets(get_secrets, master_xpub):
v = get_secrets()
@ -395,15 +419,14 @@ def test_new_wallet(nwords, goto_home, pick_menu_item, cap_story, expect_ftux,
def test_import_prv(way, testnet, pick_menu_item, cap_story, need_keypress, unit_test, cap_menu,
word_menu_entry, get_secrets, microsd_path, multiple_runs, reset_seed_words,
nfc_write_text, settings_set, virtdisk_path, expect_ftux, press_select,
press_nfc, is_q1):
if testnet:
netcode = "XTN"
settings_set('chain', 'XTN')
else:
netcode = "BTC"
settings_set('chain', 'XTN')
press_nfc, is_q1, enable_hw_ux):
unit_test('devtest/clear_seed.py')
netcode = "XTN" if testnet else "BTC"
settings_set('chain', netcode)
if way != "sd":
enable_hw_ux(way)
node = BIP32Node.from_master_secret(os.urandom(32), netcode=netcode)
prv = node.hwif(as_private=True)+'\n'
@ -465,15 +488,16 @@ def test_import_prv(way, testnet, pick_menu_item, cap_story, need_keypress, unit
def test_seed_import_tapsigner(way, retry, testnet, cap_menu, pick_menu_item, goto_home, cap_story,
need_keypress, reset_seed_words, dev, try_sign, enter_hex, unit_test,
settings_set, get_secrets, tapsigner_encrypted_backup, nfc_write_text,
press_nfc, press_select, is_q1):
press_nfc, press_select, is_q1, enable_hw_ux):
unit_test('devtest/clear_seed.py')
netcode = "XTN" if testnet else "BTC"
settings_set('chain', netcode)
if way != "sd":
enable_hw_ux(way)
fname, backup_key_hex, node = tapsigner_encrypted_backup(way, testnet=testnet)
if testnet:
settings_set('chain', 'XTN')
else:
settings_set('chain', 'XTN')
unit_test('devtest/clear_seed.py')
m = cap_menu()
assert m[0] == 'New Seed Words'
pick_menu_item('Import Existing')