From 6c8e6dcc08df420e54cd9746ef90f7b2ffeab2d4 Mon Sep 17 00:00:00 2001 From: grdddj Date: Wed, 1 Dec 2021 14:21:12 +0100 Subject: [PATCH] feat(tests): SuperShamir device tests for clicking Info button --- tests/common.py | 14 +++++- ...test_msg_recoverydevice_slip39_advanced.py | 50 +++++++++---------- tests/ui_tests/fixtures.json | 2 + 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/tests/common.py b/tests/common.py index c3fa3d631..824691fe6 100644 --- a/tests/common.py +++ b/tests/common.py @@ -113,7 +113,7 @@ def generate_entropy(strength, internal_entropy, external_entropy): return entropy_stripped -def recovery_enter_shares(debug, shares, groups=False): +def recovery_enter_shares(debug, shares, groups=False, click_info=False): """Perform the recovery flow for a set of Shamir shares. For use in an input flow function. @@ -152,6 +152,18 @@ def recovery_enter_shares(debug, shares, groups=False): # Homescreen - continue # or Homescreen - confirm success yield + + if click_info: + # Moving through the INFO button + info_button = (120, 220) + debug.wait_layout() + debug.click(info_button) + yield + debug.wait_layout() + debug.swipe_up() + debug.press_yes() + + # Finishing with current share debug.press_yes() diff --git a/tests/device_tests/test_msg_recoverydevice_slip39_advanced.py b/tests/device_tests/test_msg_recoverydevice_slip39_advanced.py index a37247e10..d1f251ca8 100644 --- a/tests/device_tests/test_msg_recoverydevice_slip39_advanced.py +++ b/tests/device_tests/test_msg_recoverydevice_slip39_advanced.py @@ -40,18 +40,21 @@ VECTORS = ( ) -@pytest.mark.parametrize("shares, secret", VECTORS) -@pytest.mark.setup_client(uninitialized=True) -def test_secret(client, shares, secret): +# To allow reusing functionality for multiple tests +def _test_secret(client, shares, secret, click_info=False): debug = client.debug def input_flow(): yield # Confirm Recovery debug.press_yes() # Proceed with recovery - yield from recovery_enter_shares(debug, shares, groups=True) + yield from recovery_enter_shares( + debug, shares, groups=True, click_info=click_info + ) with client: + if click_info: + client.watch_layout() client.set_input_flow(input_flow) ret = device.recover( client, pin_protection=False, passphrase_protection=False, label="label" @@ -66,30 +69,25 @@ def test_secret(client, shares, secret): assert debug.state().mnemonic_secret.hex() == secret +@pytest.mark.parametrize("shares, secret", VECTORS) +@pytest.mark.setup_client(uninitialized=True) +def test_secret(client, shares, secret): + _test_secret(client, shares, secret) + + +@pytest.mark.parametrize("shares, secret", VECTORS) +@pytest.mark.setup_client(uninitialized=True) +def test_secret_click_info_button(client, shares, secret): + _test_secret(client, shares, secret, click_info=True) + + @pytest.mark.setup_client(uninitialized=True) def test_extra_share_entered(client): - debug = client.debug - - def input_flow(): - yield # Confirm Recovery - debug.press_yes() - # Proceed with recovery - yield from recovery_enter_shares( - debug, EXTRA_GROUP_SHARE + MNEMONIC_SLIP39_ADVANCED_20, groups=True - ) - - with client: - client.set_input_flow(input_flow) - ret = device.recover( - client, pin_protection=False, passphrase_protection=False, label="label" - ) - - # Workflow succesfully ended - assert ret == messages.Success(message="Device recovered") - assert client.features.initialized is True - assert client.features.pin_protection is False - assert client.features.passphrase_protection is False - assert client.features.backup_type is messages.BackupType.Slip39_Advanced + _test_secret( + client, + shares=EXTRA_GROUP_SHARE + MNEMONIC_SLIP39_ADVANCED_20, + secret=VECTORS[0][1], + ) @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index dd444134c..f335ca3d4 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -516,6 +516,8 @@ "test_msg_recoverydevice_slip39_advanced.py::test_same_share": "9beff3d0bd3846fdb8a6539277a2ed07b3ada9e89211d78d5e976a36d70edd09", "test_msg_recoverydevice_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f150abe2dd2b]": "f8ce0cbe8cc57f105c1871ad57e62deba75051a8952989010c32bc69cc2f58a0", "test_msg_recoverydevice_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0ae045-c5b70566": "8e7410fd4e2cf20530ea079588ef61829a7948a1aa12e3776cbbd19153516151", +"test_msg_recoverydevice_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2e26ad-038f73e5": "61f31fe7298aee6be9dbdfe6d3316d96b980b1796f505dd1f85216676c1c3733", +"test_msg_recoverydevice_slip39_advanced.py::test_secret_click_info_button[shares1-c41d5cf80-ac77a32f": "7b6537c008092c5875d551fb83d52af3227e1149ecb15c4e8a9095e3e95ca26f", "test_msg_recoverydevice_slip39_advanced_dryrun.py::test_2of3_dryrun": "09e5dc650f1d95ee75cb1d6c50460da9865900b2991c4b04e027c4c40d0e39d0", "test_msg_recoverydevice_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "282b18ab25bc393493355b6a51959a5cfc221cda87ec64985a634630177a02a1", "test_msg_recoverydevice_slip39_basic.py::test_1of1": "65c8af9357e1e499cd17246100415bbcae7646a11d2b6381b88961b1b19e87a9",