From 1ae8042d094c157e5906dbce8d173aed6e8a81b6 Mon Sep 17 00:00:00 2001 From: Coline Date: Thu, 23 Jun 2022 10:32:41 +0200 Subject: [PATCH] feat: test nanosp --- tests/speculos/conftest.py | 9 +- .../speculos/ethereum_client/ethereum_cmd.py | 1 + .../ethereum_client/ethereum_cmd_builder.py | 2 +- tests/speculos/ethereum_client/utils.py | 3 + tests/speculos/test_configuration_cmd.py | 3 + tests/speculos/test_pubkey_cmd.py | 42 ++-- tests/speculos/test_sign_cmd.py | 238 +++++++++--------- 7 files changed, 152 insertions(+), 146 deletions(-) diff --git a/tests/speculos/conftest.py b/tests/speculos/conftest.py index 514e7d3..dbf815f 100644 --- a/tests/speculos/conftest.py +++ b/tests/speculos/conftest.py @@ -10,6 +10,9 @@ from ethereum_client.ethereum_cmd import EthereumCommand SCRIPT_DIR = Path(__file__).absolute().parent API_URL = "http://127.0.0.1:5000" +VERSION = {"nanos": "2.1", "nanox": "2.0.2", "nanosp": "1.0"} + + def pytest_addoption(parser): # nanos or nanox parser.addoption("--model", action="store", default="nanos") @@ -21,12 +24,8 @@ def pytest_addoption(parser): def client(pytestconfig): file_path = SCRIPT_DIR.parent.parent / "bin" / "app.elf" model = pytestconfig.getoption("model") - version = '2.1' # latest version of nanos_sdk - if model == "nanox": - version = '2.0.2' # latest version of nanox_sdk - - args = ['--log-level', 'speculos:DEBUG','--model', model, '--display', pytestconfig.getoption("display"), '--sdk', version] + args = ['--log-level', 'speculos:DEBUG','--model', model, '--display', pytestconfig.getoption("display"), '--sdk', VERSION[model]] with SpeculosClient(app=str(file_path), args=args) as client: yield client diff --git a/tests/speculos/ethereum_client/ethereum_cmd.py b/tests/speculos/ethereum_client/ethereum_cmd.py index bac567d..dca85a3 100644 --- a/tests/speculos/ethereum_client/ethereum_cmd.py +++ b/tests/speculos/ethereum_client/ethereum_cmd.py @@ -80,6 +80,7 @@ class EthereumCommand: result.append(eth_addr) result.append(chain_code) + # Not use @contextmanager def test_zemu_hard_apdu_sign(self, transaction: Transaction) -> Tuple[int, int, int]: sign: bytes = b'\xe0\x04\x00\x00\x80\x05\x80\x00\x00\x2c\x80\x00\x00\x3c\x80\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x69\x46\x85\x06\xa8\xb1\x5e\x00\x82\xeb\xeb\x94\x6b\x17\x54\x74\xe8\x90\x94\xc4\x4d\xa9\x8b\x95\x4e\xed\xea\xc4\x95\x27\x1d\x0f\x80\xb8\x44\x09\x5e\xa7\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x27\x68\xde\x32\xb0\xb8\x0b\x7a\x34\x54\xc0\x6b\xda\xc9\x4a\x69\xdd\xc7\xa9\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x80\x80' diff --git a/tests/speculos/ethereum_client/ethereum_cmd_builder.py b/tests/speculos/ethereum_client/ethereum_cmd_builder.py index 1dc0e67..241a4b8 100644 --- a/tests/speculos/ethereum_client/ethereum_cmd_builder.py +++ b/tests/speculos/ethereum_client/ethereum_cmd_builder.py @@ -28,7 +28,6 @@ def chunkify(data: bytes, chunk_len: int) -> Iterator[Tuple[bool, bytes]]: if remaining: yield True, data[offset:] - class InsType(enum.IntEnum): INS_GET_PUBLIC_KEY = 0x02 INS_SIGN_TX = 0x04 @@ -149,6 +148,7 @@ class EthereumCommandBuilder: p2=0x01, cdata=cdata) + # Not use def sign_tx(self, bip32_path: str, transaction: Transaction) -> Iterator[Tuple[bool, bytes]]: """Command builder for INS_SIGN_TX. diff --git a/tests/speculos/ethereum_client/utils.py b/tests/speculos/ethereum_client/utils.py index 4a31eb7..d5d05a4 100644 --- a/tests/speculos/ethereum_client/utils.py +++ b/tests/speculos/ethereum_client/utils.py @@ -10,6 +10,9 @@ UINT64_MAX: int = 18446744073709551615 UINT32_MAX: int = 4294967295 UINT16_MAX: int = 65535 +# Association tableau si écran nanos ou nanox +PATH_IMG = {"nanos": "nanos", "nanox": "nanox", "nanosp": "nanox"} + def save_screenshot(cmd, path: str): screenshot = cmd.client.get_screenshot() img = Image.open(io.BytesIO(screenshot)) diff --git a/tests/speculos/test_configuration_cmd.py b/tests/speculos/test_configuration_cmd.py index 52c6601..c758ee9 100644 --- a/tests/speculos/test_configuration_cmd.py +++ b/tests/speculos/test_configuration_cmd.py @@ -4,4 +4,7 @@ def test_configuration(cmd): assert cmd.get_configuration() == (14, 1, 9, 17) if cmd.model == "nanox": + assert cmd.get_configuration() == (14, 1, 9, 17) + + if cmd.model == "nanosp": assert cmd.get_configuration() == (14, 1, 9, 17) \ No newline at end of file diff --git a/tests/speculos/test_pubkey_cmd.py b/tests/speculos/test_pubkey_cmd.py index 4f940f7..d059ceb 100644 --- a/tests/speculos/test_pubkey_cmd.py +++ b/tests/speculos/test_pubkey_cmd.py @@ -6,7 +6,7 @@ from typing import Tuple from time import sleep import ethereum_client -from ethereum_client.utils import UINT64_MAX, compare_screenshot, save_screenshot +from ethereum_client.utils import UINT64_MAX, compare_screenshot, save_screenshot, PATH_IMG def test_get_public_key(cmd): @@ -32,32 +32,32 @@ def test_get_public_key(cmd): if cmd.model == "nanos": # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00000.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00001.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00002.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00003.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00003.png") cmd.client.press_and_release('right') # Approved - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00004.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00004.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00000.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00001.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png") cmd.client.press_and_release('right') # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/get_public_key/00002.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png") cmd.client.press_and_release('both') uncompressed_addr_len, eth_addr, chain_code = result @@ -79,40 +79,40 @@ def test_reject_get_public_key(cmd): if cmd.model == "nanos": # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00000.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00001.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00002.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00003.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png") cmd.client.press_and_release('right') # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00004.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00004.png") cmd.client.press_and_release('right') # Reject - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00005.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00005.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00000.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00001.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png") cmd.client.press_and_release('right') # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00002.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png") cmd.client.press_and_release('right') # Reject - compare_screenshot(cmd, f"screenshots/pubkey/{cmd.model}/reject_get_public_key/00003.png") + compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png") cmd.client.press_and_release('both') except ethereum_client.exception.errors.DenyError as error: diff --git a/tests/speculos/test_sign_cmd.py b/tests/speculos/test_sign_cmd.py index 6c44f5d..0590c2b 100644 --- a/tests/speculos/test_sign_cmd.py +++ b/tests/speculos/test_sign_cmd.py @@ -2,7 +2,7 @@ from time import sleep import ethereum_client -from ethereum_client.utils import UINT64_MAX, compare_screenshot, compare_screenshot, save_screenshot +from ethereum_client.utils import UINT64_MAX, compare_screenshot, compare_screenshot, save_screenshot, PATH_IMG from ethereum_client.transaction import Transaction @@ -29,52 +29,52 @@ def test_sign_simple(cmd): if cmd.model == "nanos": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00000.png") cmd.client.press_and_release('right') # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00001.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00003.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00004.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00005.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00006.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00007.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00007.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00008.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00008.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00000.png") cmd.client.press_and_release('right') # Amount - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00001.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00002.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00003.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/simple/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/simple/00004.png") cmd.client.press_and_release('both') v, r, s = result @@ -105,60 +105,60 @@ def test_sign_dai_coin_type_on_network_5234(cmd): if cmd.model == "nanos": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00000.png") cmd.client.press_and_release('right') # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00001.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00003.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00004.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00005.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00006.png") cmd.client.press_and_release('right') # Network 5243 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00007.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00007.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00008.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00008.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00009.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00009.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00000.png") cmd.client.press_and_release('right') # Amount - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00001.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00002.png") cmd.client.press_and_release('right') # Network 5243 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00003.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00004.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/dai_coin_type_on_network_5234/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/dai_coin_type_on_network_5234/00005.png") cmd.client.press_and_release('both') v, r, s = result @@ -190,60 +190,60 @@ def test_sign_reject(cmd): if cmd.model == "nanos": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00000.png") cmd.client.press_and_release('right') # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00001.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00003.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00004.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00005.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00006.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00007.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00007.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00008.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00008.png") cmd.client.press_and_release('right') # Reject - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00009.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00009.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00000.png") cmd.client.press_and_release('right') # Amount - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00001.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00002.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00003.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00004.png") cmd.client.press_and_release('right') # Reject - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/reject/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/reject/00005.png") cmd.client.press_and_release('both') except ethereum_client.exception.errors.DenyError as error: @@ -272,52 +272,52 @@ def test_sign_limit_nonce(cmd): if cmd.model == "nanos": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00000.png") cmd.client.press_and_release('right') # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00001.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00003.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00004.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00005.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00006.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00007.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00007.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00008.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00008.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00000.png") cmd.client.press_and_release('right') # Amount - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00001.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00002.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00003.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/limit_nonce/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/limit_nonce/00004.png") cmd.client.press_and_release('both') v, r, s = result @@ -398,60 +398,60 @@ def test_sign_nonce_display(cmd): if cmd.model == "nanos": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00000.png") cmd.client.press_and_release('right') # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00001.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00003.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00004.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00005.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00006.png") cmd.client.press_and_release('right') # Nonce - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00007.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00007.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00008.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00008.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00009.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00009.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00000.png") cmd.client.press_and_release('right') # Amount - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00001.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00002.png") cmd.client.press_and_release('right') # Nonce - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00003.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00004.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/nonce_display/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/nonce_display/00005.png") cmd.client.press_and_release('both') v, r, s = result @@ -500,60 +500,60 @@ def test_sign_blind_simple(cmd): if cmd.model == "nanos": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00000.png") cmd.client.press_and_release('right') # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00001.png") cmd.client.press_and_release('right') # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00003.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00004.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00005.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00006.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00007.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00007.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00008.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00008.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00009.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00009.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00000.png") cmd.client.press_and_release('right') # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00001.png") cmd.client.press_and_release('right') # Amount - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00002.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00003.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00004.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_simple/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_simple/00005.png") cmd.client.press_and_release('both') v, r, s = result @@ -586,7 +586,7 @@ def test_sign_blind_error_disabled(cmd): if cmd.model == "nanos": pass - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": pass except ethereum_client.exception.errors.UnknownDeviceError as error: assert error.args[0] == '0x6a80' @@ -632,68 +632,68 @@ def test_sign_blind_and_nonce_display(cmd): if cmd.model == "nanos": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00000.png") cmd.client.press_and_release('right') # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00001.png") cmd.client.press_and_release('right') # Amount 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00002.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00003.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00004.png") cmd.client.press_and_release('right') # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00005.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00006.png") cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00007.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00007.png") cmd.client.press_and_release('right') # Nonce - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00008.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00008.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00009.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00009.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00010.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00010.png") cmd.client.press_and_release('both') - if cmd.model == "nanox": + if cmd.model == "nanox" or cmd.model == "nanosp": # Review transaction - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00000.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00000.png") cmd.client.press_and_release('right') # Blind Signing - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00001.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00001.png") cmd.client.press_and_release('right') # Amount - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00002.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00002.png") cmd.client.press_and_release('right') # Address - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00003.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00003.png") cmd.client.press_and_release('right') # Nonce - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00004.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00004.png") cmd.client.press_and_release('right') # Max Fees - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00005.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00005.png") cmd.client.press_and_release('right') # Accept and send - compare_screenshot(cmd, f"screenshots/sign/{cmd.model}/blind_and_nonce_display/00006.png") + compare_screenshot(cmd, f"screenshots/sign/{PATH_IMG[cmd.model]}/blind_and_nonce_display/00006.png") cmd.client.press_and_release('both') v, r, s = result