test for nfc share to pushtx

This commit is contained in:
Peter D. Gray 2024-06-14 11:31:34 -04:00
parent 947ec35d68
commit 81f7af1857
No known key found for this signature in database
GPG Key ID: A2DCD558C2BE5D7C
3 changed files with 52 additions and 2 deletions

View File

@ -329,7 +329,7 @@ NFCToolsMenu = [
MenuItem('Verify Address', f=nfc_address_verify),
MenuItem('File Share', f=nfc_share_file),
MenuItem('Import Multisig', f=import_multisig_nfc),
MenuItem('NFC Push Tx', f=nfc_pushtx_file, predicate=lambda: settings.get("ptxurl", False)),
MenuItem('Push Transaction', f=nfc_pushtx_file, predicate=lambda: settings.get("ptxurl", False)),
]
AdvancedNormalMenu = [
@ -344,7 +344,7 @@ AdvancedNormalMenu = [
f=drv_entro_start),
MenuItem("View Identity", f=view_ident),
MenuItem("Temporary Seed", menu=make_ephemeral_seed_menu),
NonDefaultMenuItem('NFC PushTx', 'ptxurl', menu=pushtx_setup_menu),
NonDefaultMenuItem('NFC Push Tx', 'ptxurl', menu=pushtx_setup_menu),
MenuItem('Paper Wallets', f=make_paper_wallet),
ToggleMenuItem('Enable HSM', 'hsmcmd', ['Default Off', 'Enable'],
story=("Enable HSM? Enables all user management commands, and other HSM-only USB commands. "

View File

@ -1574,6 +1574,13 @@ def nfc_write(request, needs_nfc, is_q1):
except:
return doit_usb
@pytest.fixture()
def enable_nfc(needs_nfc, sim_exec, settings_set):
def doit():
settings_set('nfc', 1)
sim_exec('import nfc; nfc.NFCHandler.startup()')
return doit
@pytest.fixture()
def scan_a_qr(sim_exec, is_q1):
# simulate a QR being scanned

View File

@ -500,4 +500,47 @@ def test_nfc_pushtx(num_outs, chain, sim_exec, settings_set, settings_remove,
settings_remove('ptxurl')
settings_set('chain', 'XTN')
def test_share_by_pushtx(goto_home, cap_story, pick_menu_item, settings_set, settings_remove,
microsd_path, cap_menu, has_qwerty, cap_screen,
press_cancel, enable_nfc, nfc_block4rf, nfc_read):
enable_nfc()
fake_txn = b'\x02\0\0\0\0\0\0' + (b'Ab'*500)
prefix = 'http://10.0.0.10/pushtx#'
settings_set('ptxurl', prefix)
fname = "fake-nfc.txn"
with open(microsd_path(fname), "wb") as f:
f.write(fake_txn)
goto_home()
pick_menu_item("Advanced/Tools")
pick_menu_item('NFC Tools')
pick_menu_item('Push Transaction')
time.sleep(0.1)
pick_menu_item(fname)
time.sleep(0.1)
# expect NFC animation
nfc_block4rf()
if has_qwerty:
scr = cap_screen()
assert 'File:' in scr
assert fname in scr
contents = nfc_read()
press_cancel()
# hacky quick check
from base64 import urlsafe_b64encode
assert b't='+urlsafe_b64encode(fake_txn).rstrip(b'=')+b'&c=' in contents
settings_remove('ptxurl')
# EOF