From fa355a5d970d30029cf17ba35c40209209a327fa Mon Sep 17 00:00:00 2001 From: Jean P <10632523+TamtamHero@users.noreply.github.com> Date: Tue, 28 Sep 2021 12:32:06 +0200 Subject: [PATCH] Add a UI warning when contract data are not enabled in the settings (#193) * Add a UI warning when contract data are not enabled in the settings * Update wording "contract data" -> "blind signing" to raise awareness * Bump version 1.9.5 * remove hardcoded path in helper build script * Add blind signature test * Add snapshot-tmp to gitignore * Remove unused snapshots * Increase tests timings * Remove unused snapshots * Fix and rename compound blind deposit test * Update Approve and Transfer tests * Update tests * Cosmetic changes + disable debug flag * Update CHANGELOG.md --- .gitignore | 2 +- CHANGELOG.md | 9 + Makefile | 2 +- src/main.c | 4 + src/ui_callbacks.h | 1 + src/ui_flow.c | 44 +- src/ui_flow.h | 2 + src_features/signTx/logic_signTx.c | 2 + src_features/signTx/ui_flow_signTx.c | 8 +- tests/build_local_test_elfs.sh | 4 +- .../snapshots/deposit/nanos/data_present.png | Bin 518 -> 0 bytes .../snapshots/deposit/nanox/data_present.png | Bin 600 -> 0 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png} | Bin .../00007.png} | Bin .../nanos_approve_dai_tokens/00008.png | Bin 0 -> 531 bytes .../00000.png} | Bin .../00001.png | Bin 0 -> 503 bytes .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png} | Bin .../00007.png} | Bin .../00008.png | Bin 0 -> 531 bytes .../nanos_disable_blind_signing/00000.png | Bin 0 -> 531 bytes .../nanos_disable_blind_signing/00001.png | Bin 0 -> 446 bytes .../nanos_disable_blind_signing/00002.png | Bin 0 -> 480 bytes .../nanos_disable_blind_signing/00003.png | Bin 0 -> 514 bytes .../nanos_disable_blind_signing/00004.png | Bin 0 -> 566 bytes .../nanos_disable_blind_signing/00005.png | Bin 0 -> 614 bytes .../nanos_disable_blind_signing/00006.png | Bin 0 -> 628 bytes .../nanos_disable_blind_signing/00007.png | Bin 0 -> 338 bytes .../nanos_disable_blind_signing/00008.png | Bin 0 -> 531 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png} | Bin .../00007.png} | Bin .../00008.png} | Bin .../00009.png} | Bin .../00010.png | Bin 0 -> 531 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png} | Bin .../00007.png} | Bin .../fees.png => nanos_transfer_bsc/00008.png} | Bin .../00009.png} | Bin tests/snapshots/nanos_transfer_bsc/00010.png | Bin 0 -> 531 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png} | Bin .../nanos_transfer_eip1559/00007.png | Bin 0 -> 531 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png} | Bin .../00007.png} | Bin .../00008.png} | Bin .../nanos_transfer_ethereum/00009.png | Bin 0 -> 531 bytes .../00000.png} | Bin .../00001.png | Bin 0 -> 474 bytes .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png} | Bin .../00007.png} | Bin .../00008.png | Bin 0 -> 561 bytes .../00009.png} | Bin .../00010.png | Bin 0 -> 531 bytes .../nanos_transfer_ethereum_clone/00000.png | Bin 0 -> 541 bytes .../00001.png} | Bin .../nanos_transfer_ethereum_clone/00002.png | Bin 0 -> 759 bytes .../nanos_transfer_ethereum_clone/00003.png | Bin 0 -> 479 bytes .../nanos_transfer_ethereum_clone/00004.png | Bin 0 -> 809 bytes .../nanos_transfer_ethereum_clone/00005.png | Bin 0 -> 837 bytes .../nanos_transfer_ethereum_clone/00006.png | Bin 0 -> 567 bytes .../00007.png} | Bin .../nanos_transfer_ethereum_clone/00008.png | Bin 0 -> 582 bytes .../nanos_transfer_ethereum_clone/00009.png | Bin 0 -> 531 bytes .../nanos_transfer_palm_network/00000.png | Bin 0 -> 541 bytes .../00001.png} | Bin .../nanos_transfer_palm_network/00002.png | Bin 0 -> 759 bytes .../nanos_transfer_palm_network/00003.png | Bin 0 -> 479 bytes .../nanos_transfer_palm_network/00004.png | Bin 0 -> 809 bytes .../nanos_transfer_palm_network/00005.png | Bin 0 -> 837 bytes .../nanos_transfer_palm_network/00006.png | Bin 0 -> 567 bytes .../00007.png} | Bin .../00008.png} | Bin .../nanos_transfer_palm_network/00009.png | Bin 0 -> 582 bytes .../nanos_transfer_palm_network/00010.png | Bin 0 -> 531 bytes .../00000.png | Bin 0 -> 639 bytes .../00001.png | Bin 0 -> 631 bytes .../00002.png | Bin 0 -> 531 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../nanox_approve_dai_tokens/00006.png | Bin 0 -> 628 bytes .../00000.png} | Bin .../00001.png | Bin 0 -> 590 bytes .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png | Bin 0 -> 628 bytes .../nanox_disable_blind_signing/00000.png | Bin 0 -> 628 bytes .../nanox_disable_blind_signing/00001.png | Bin 0 -> 539 bytes .../nanox_disable_blind_signing/00002.png | Bin 0 -> 589 bytes .../nanox_disable_blind_signing/00003.png | Bin 0 -> 1016 bytes .../nanox_disable_blind_signing/00004.png | Bin 0 -> 1067 bytes .../nanox_disable_blind_signing/00005.png | Bin 0 -> 1102 bytes .../nanox_disable_blind_signing/00006.png | Bin 0 -> 1084 bytes .../nanox_disable_blind_signing/00007.png | Bin 0 -> 434 bytes .../nanox_disable_blind_signing/00008.png | Bin 0 -> 628 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../00005.png} | Bin .../00006.png | Bin 0 -> 628 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../fees.png => nanox_transfer_bsc/00004.png} | Bin .../00005.png} | Bin tests/snapshots/nanox_transfer_bsc/00006.png | Bin 0 -> 628 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../nanox_transfer_eip1559/00005.png | Bin 0 -> 628 bytes .../00000.png} | Bin .../00001.png} | Bin .../00002.png} | Bin .../00003.png} | Bin .../00004.png} | Bin .../nanox_transfer_ethereum/00005.png | Bin 0 -> 628 bytes .../00000.png} | Bin .../00001.png | Bin 0 -> 866 bytes .../00002.png} | Bin .../00003.png} | Bin .../00004.png | Bin 0 -> 692 bytes .../00005.png} | Bin .../00006.png | Bin 0 -> 628 bytes .../nanox_transfer_ethereum_clone/00000.png | Bin 0 -> 636 bytes .../00001.png} | Bin .../nanox_transfer_ethereum_clone/00002.png | Bin 0 -> 1298 bytes .../00003.png} | Bin .../nanox_transfer_ethereum_clone/00004.png | Bin 0 -> 674 bytes .../nanox_transfer_ethereum_clone/00005.png | Bin 0 -> 628 bytes .../nanox_transfer_palm_network/00000.png | Bin 0 -> 636 bytes .../00001.png} | Bin .../nanox_transfer_palm_network/00002.png | Bin 0 -> 1298 bytes .../00003.png} | Bin .../00004.png} | Bin .../nanox_transfer_palm_network/00005.png | Bin 0 -> 674 bytes .../nanox_transfer_palm_network/00006.png | Bin 0 -> 628 bytes .../00000.png | Bin 0 -> 903 bytes .../00001.png | Bin 0 -> 628 bytes tests/src/approve.test.js | 192 ++------- tests/src/blind_compound_deposit.test.js | 37 ++ tests/src/chainid.test.js | 405 +++--------------- tests/src/contract_data_warning.test.js | 38 ++ tests/src/deposit.test.js | 171 -------- tests/src/eip1559.test.js | 167 ++------ tests/src/generic.js | 53 --- tests/src/send.test.js | 367 +++------------- tests/src/send_bsc.test.js | 199 ++------- tests/src/send_etc.test.js | 247 ++++------- tests/src/test.fixture.js | 75 ++++ 196 files changed, 475 insertions(+), 1554 deletions(-) delete mode 100644 tests/snapshots/deposit/nanos/data_present.png delete mode 100644 tests/snapshots/deposit/nanox/data_present.png rename tests/snapshots/{approve/nanos/review.png => nanos_approve_dai_tokens/00000.png} (100%) rename tests/snapshots/{approve/nanos/type.png => nanos_approve_dai_tokens/00001.png} (100%) rename tests/snapshots/{approve/nanos/amount.png => nanos_approve_dai_tokens/00002.png} (100%) rename tests/snapshots/{approve/nanos/address_1.png => nanos_approve_dai_tokens/00003.png} (100%) rename tests/snapshots/{approve/nanos/address_2.png => nanos_approve_dai_tokens/00004.png} (100%) rename tests/snapshots/{approve/nanos/address_3.png => nanos_approve_dai_tokens/00005.png} (100%) rename tests/snapshots/{approve/nanos/fees.png => nanos_approve_dai_tokens/00006.png} (100%) rename tests/snapshots/{approve/nanos/accept.png => nanos_approve_dai_tokens/00007.png} (100%) create mode 100644 tests/snapshots/nanos_approve_dai_tokens/00008.png rename tests/snapshots/{chainid/nanos/review.png => nanos_deposit_eth_compound_blind/00000.png} (100%) create mode 100644 tests/snapshots/nanos_deposit_eth_compound_blind/00001.png rename tests/snapshots/{deposit/nanos/amount.png => nanos_deposit_eth_compound_blind/00002.png} (100%) rename tests/snapshots/{deposit/nanos/address_1.png => nanos_deposit_eth_compound_blind/00003.png} (100%) rename tests/snapshots/{deposit/nanos/address_2.png => nanos_deposit_eth_compound_blind/00004.png} (100%) rename tests/snapshots/{deposit/nanos/address_3.png => nanos_deposit_eth_compound_blind/00005.png} (100%) rename tests/snapshots/{deposit/nanos/fees.png => nanos_deposit_eth_compound_blind/00006.png} (100%) rename tests/snapshots/{chainid/nanos/accept.png => nanos_deposit_eth_compound_blind/00007.png} (100%) create mode 100644 tests/snapshots/nanos_deposit_eth_compound_blind/00008.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00000.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00001.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00002.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00003.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00004.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00005.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00006.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00007.png create mode 100644 tests/snapshots/nanos_disable_blind_signing/00008.png rename tests/snapshots/{deposit/nanos/review.png => nanos_transfer_112233445566_network/00000.png} (100%) rename tests/snapshots/{chainid/nanos/amount_1.png => nanos_transfer_112233445566_network/00001.png} (100%) rename tests/snapshots/{chainid/nanos/amount_2.png => nanos_transfer_112233445566_network/00002.png} (100%) rename tests/snapshots/{chainid/nanos/amount_3.png => nanos_transfer_112233445566_network/00003.png} (100%) rename tests/snapshots/{chainid/nanos/address_1.png => nanos_transfer_112233445566_network/00004.png} (100%) rename tests/snapshots/{chainid/nanos/address_2.png => nanos_transfer_112233445566_network/00005.png} (100%) rename tests/snapshots/{chainid/nanos/address_3.png => nanos_transfer_112233445566_network/00006.png} (100%) rename tests/snapshots/{chainid/nanos/network.png => nanos_transfer_112233445566_network/00007.png} (100%) rename tests/snapshots/{chainid/nanos/fees.png => nanos_transfer_112233445566_network/00008.png} (100%) rename tests/snapshots/{deposit/nanos/accept.png => nanos_transfer_112233445566_network/00009.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_112233445566_network/00010.png rename tests/snapshots/{eip1559/nanos/review.png => nanos_transfer_bsc/00000.png} (100%) rename tests/snapshots/{send_bsc/nanos/amount_1.png => nanos_transfer_bsc/00001.png} (100%) rename tests/snapshots/{send/nanos/amount_2.png => nanos_transfer_bsc/00002.png} (100%) rename tests/snapshots/{send/nanos/amount_3.png => nanos_transfer_bsc/00003.png} (100%) rename tests/snapshots/{send/nanos/address_1.png => nanos_transfer_bsc/00004.png} (100%) rename tests/snapshots/{send/nanos/address_2.png => nanos_transfer_bsc/00005.png} (100%) rename tests/snapshots/{send/nanos/address_3.png => nanos_transfer_bsc/00006.png} (100%) rename tests/snapshots/{send_bsc/nanos/network.png => nanos_transfer_bsc/00007.png} (100%) rename tests/snapshots/{send_bsc/nanos/fees.png => nanos_transfer_bsc/00008.png} (100%) rename tests/snapshots/{eip1559/nanos/accept.png => nanos_transfer_bsc/00009.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_bsc/00010.png rename tests/snapshots/{send/nanos/review.png => nanos_transfer_eip1559/00000.png} (100%) rename tests/snapshots/{eip1559/nanos/amount.png => nanos_transfer_eip1559/00001.png} (100%) rename tests/snapshots/{eip1559/nanos/address_1.png => nanos_transfer_eip1559/00002.png} (100%) rename tests/snapshots/{eip1559/nanos/address_2.png => nanos_transfer_eip1559/00003.png} (100%) rename tests/snapshots/{eip1559/nanos/address_3.png => nanos_transfer_eip1559/00004.png} (100%) rename tests/snapshots/{eip1559/nanos/fees.png => nanos_transfer_eip1559/00005.png} (100%) rename tests/snapshots/{send/nanos/accept.png => nanos_transfer_eip1559/00006.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_eip1559/00007.png rename tests/snapshots/{send_bsc/nanos/review.png => nanos_transfer_ethereum/00000.png} (100%) rename tests/snapshots/{send/nanos/amount_1.png => nanos_transfer_ethereum/00001.png} (100%) rename tests/snapshots/{send_bsc/nanos/amount_2.png => nanos_transfer_ethereum/00002.png} (100%) rename tests/snapshots/{send_bsc/nanos/amount_3.png => nanos_transfer_ethereum/00003.png} (100%) rename tests/snapshots/{send_bsc/nanos/address_1.png => nanos_transfer_ethereum/00004.png} (100%) rename tests/snapshots/{send_bsc/nanos/address_2.png => nanos_transfer_ethereum/00005.png} (100%) rename tests/snapshots/{send_bsc/nanos/address_3.png => nanos_transfer_ethereum/00006.png} (100%) rename tests/snapshots/{send/nanos/fees.png => nanos_transfer_ethereum/00007.png} (100%) rename tests/snapshots/{send_bsc/nanos/accept.png => nanos_transfer_ethereum/00008.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_ethereum/00009.png rename tests/snapshots/{send_etc/nanos/review.png => nanos_transfer_ethereum_5234_network/00000.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_ethereum_5234_network/00001.png rename tests/snapshots/{send_etc/nanos/amount_2.png => nanos_transfer_ethereum_5234_network/00002.png} (100%) rename tests/snapshots/{send_etc/nanos/amount_3.png => nanos_transfer_ethereum_5234_network/00003.png} (100%) rename tests/snapshots/{send_etc/nanos/address_1.png => nanos_transfer_ethereum_5234_network/00004.png} (100%) rename tests/snapshots/{send_etc/nanos/address_2.png => nanos_transfer_ethereum_5234_network/00005.png} (100%) rename tests/snapshots/{send_etc/nanos/address_3.png => nanos_transfer_ethereum_5234_network/00006.png} (100%) rename tests/snapshots/{send/nanos/network.png => nanos_transfer_ethereum_5234_network/00007.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_ethereum_5234_network/00008.png rename tests/snapshots/{send_etc/nanos/accept.png => nanos_transfer_ethereum_5234_network/00009.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_ethereum_5234_network/00010.png create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00000.png rename tests/snapshots/{send_etc/nanos/amount_1.png => nanos_transfer_ethereum_clone/00001.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00002.png create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00003.png create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00004.png create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00005.png create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00006.png rename tests/snapshots/{send_etc/nanos/fees.png => nanos_transfer_ethereum_clone/00007.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00008.png create mode 100644 tests/snapshots/nanos_transfer_ethereum_clone/00009.png create mode 100644 tests/snapshots/nanos_transfer_palm_network/00000.png rename tests/snapshots/{chainid/nanos/amount_1_palm.png => nanos_transfer_palm_network/00001.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_palm_network/00002.png create mode 100644 tests/snapshots/nanos_transfer_palm_network/00003.png create mode 100644 tests/snapshots/nanos_transfer_palm_network/00004.png create mode 100644 tests/snapshots/nanos_transfer_palm_network/00005.png create mode 100644 tests/snapshots/nanos_transfer_palm_network/00006.png rename tests/snapshots/{chainid/nanos/palm.png => nanos_transfer_palm_network/00007.png} (100%) rename tests/snapshots/{chainid/nanos/fees_palm.png => nanos_transfer_palm_network/00008.png} (100%) create mode 100644 tests/snapshots/nanos_transfer_palm_network/00009.png create mode 100644 tests/snapshots/nanos_transfer_palm_network/00010.png create mode 100644 tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00000.png create mode 100644 tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00001.png create mode 100644 tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00002.png rename tests/snapshots/{approve/nanox/review.png => nanox_approve_dai_tokens/00000.png} (100%) rename tests/snapshots/{approve/nanox/type.png => nanox_approve_dai_tokens/00001.png} (100%) rename tests/snapshots/{approve/nanox/amount.png => nanox_approve_dai_tokens/00002.png} (100%) rename tests/snapshots/{approve/nanox/address.png => nanox_approve_dai_tokens/00003.png} (100%) rename tests/snapshots/{approve/nanox/fees.png => nanox_approve_dai_tokens/00004.png} (100%) rename tests/snapshots/{approve/nanox/accept.png => nanox_approve_dai_tokens/00005.png} (100%) create mode 100644 tests/snapshots/nanox_approve_dai_tokens/00006.png rename tests/snapshots/{chainid/nanox/review.png => nanox_deposit_eth_compound_blind/00000.png} (100%) create mode 100644 tests/snapshots/nanox_deposit_eth_compound_blind/00001.png rename tests/snapshots/{deposit/nanox/amount.png => nanox_deposit_eth_compound_blind/00002.png} (100%) rename tests/snapshots/{deposit/nanox/address.png => nanox_deposit_eth_compound_blind/00003.png} (100%) rename tests/snapshots/{deposit/nanox/fees.png => nanox_deposit_eth_compound_blind/00004.png} (100%) rename tests/snapshots/{chainid/nanox/accept.png => nanox_deposit_eth_compound_blind/00005.png} (100%) create mode 100644 tests/snapshots/nanox_deposit_eth_compound_blind/00006.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00000.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00001.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00002.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00003.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00004.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00005.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00006.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00007.png create mode 100644 tests/snapshots/nanox_disable_blind_signing/00008.png rename tests/snapshots/{deposit/nanox/review.png => nanox_transfer_112233445566_network/00000.png} (100%) rename tests/snapshots/{chainid/nanox/amount.png => nanox_transfer_112233445566_network/00001.png} (100%) rename tests/snapshots/{chainid/nanox/address.png => nanox_transfer_112233445566_network/00002.png} (100%) rename tests/snapshots/{chainid/nanox/network.png => nanox_transfer_112233445566_network/00003.png} (100%) rename tests/snapshots/{chainid/nanox/fees.png => nanox_transfer_112233445566_network/00004.png} (100%) rename tests/snapshots/{deposit/nanox/accept.png => nanox_transfer_112233445566_network/00005.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_112233445566_network/00006.png rename tests/snapshots/{eip1559/nanox/review.png => nanox_transfer_bsc/00000.png} (100%) rename tests/snapshots/{send_bsc/nanox/amount.png => nanox_transfer_bsc/00001.png} (100%) rename tests/snapshots/{send/nanox/address.png => nanox_transfer_bsc/00002.png} (100%) rename tests/snapshots/{send_bsc/nanox/network.png => nanox_transfer_bsc/00003.png} (100%) rename tests/snapshots/{send_bsc/nanox/fees.png => nanox_transfer_bsc/00004.png} (100%) rename tests/snapshots/{eip1559/nanox/accept.png => nanox_transfer_bsc/00005.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_bsc/00006.png rename tests/snapshots/{send/nanox/review.png => nanox_transfer_eip1559/00000.png} (100%) rename tests/snapshots/{eip1559/nanox/amount.png => nanox_transfer_eip1559/00001.png} (100%) rename tests/snapshots/{eip1559/nanox/address.png => nanox_transfer_eip1559/00002.png} (100%) rename tests/snapshots/{eip1559/nanox/fees.png => nanox_transfer_eip1559/00003.png} (100%) rename tests/snapshots/{send/nanox/accept.png => nanox_transfer_eip1559/00004.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_eip1559/00005.png rename tests/snapshots/{send_bsc/nanox/review.png => nanox_transfer_ethereum/00000.png} (100%) rename tests/snapshots/{send/nanox/amount.png => nanox_transfer_ethereum/00001.png} (100%) rename tests/snapshots/{send_bsc/nanox/address.png => nanox_transfer_ethereum/00002.png} (100%) rename tests/snapshots/{send/nanox/fees.png => nanox_transfer_ethereum/00003.png} (100%) rename tests/snapshots/{send_bsc/nanox/accept.png => nanox_transfer_ethereum/00004.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_ethereum/00005.png rename tests/snapshots/{send_etc/nanox/review.png => nanox_transfer_ethereum_5234_network/00000.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_ethereum_5234_network/00001.png rename tests/snapshots/{send_etc/nanox/address.png => nanox_transfer_ethereum_5234_network/00002.png} (100%) rename tests/snapshots/{send/nanox/network.png => nanox_transfer_ethereum_5234_network/00003.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_ethereum_5234_network/00004.png rename tests/snapshots/{send_etc/nanox/accept.png => nanox_transfer_ethereum_5234_network/00005.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_ethereum_5234_network/00006.png create mode 100644 tests/snapshots/nanox_transfer_ethereum_clone/00000.png rename tests/snapshots/{send_etc/nanox/amount.png => nanox_transfer_ethereum_clone/00001.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_ethereum_clone/00002.png rename tests/snapshots/{send_etc/nanox/fees.png => nanox_transfer_ethereum_clone/00003.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_ethereum_clone/00004.png create mode 100644 tests/snapshots/nanox_transfer_ethereum_clone/00005.png create mode 100644 tests/snapshots/nanox_transfer_palm_network/00000.png rename tests/snapshots/{chainid/nanox/amount_palm.png => nanox_transfer_palm_network/00001.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_palm_network/00002.png rename tests/snapshots/{chainid/nanox/palm.png => nanox_transfer_palm_network/00003.png} (100%) rename tests/snapshots/{chainid/nanox/fees_palm.png => nanox_transfer_palm_network/00004.png} (100%) create mode 100644 tests/snapshots/nanox_transfer_palm_network/00005.png create mode 100644 tests/snapshots/nanox_transfer_palm_network/00006.png create mode 100644 tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00000.png create mode 100644 tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00001.png create mode 100644 tests/src/blind_compound_deposit.test.js create mode 100644 tests/src/contract_data_warning.test.js delete mode 100644 tests/src/deposit.test.js delete mode 100644 tests/src/generic.js create mode 100644 tests/src/test.fixture.js diff --git a/.gitignore b/.gitignore index 4dbca94..16c938c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,6 @@ tests/node_modules tests/lib tests/yarn-error.log tests/elfs/* -tests/snapshots/tmp/* +tests/snapshots-tmp .vscode diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ec5718..998ed50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [1.9.5](https://github.com/ledgerhq/app-ethereum/compare/1.9.4...1.9.5) - 2021-9-27 + +### Changed + +- "Contract Data" is now replaced with "Blind sign", which carries more meaning for regular users. + +### Added + +- When blind signing is disabled in settings, and a transaction with smart conract interactions is sent to the app, a new warning screen pops to let the user know that the setting must be enabled to sign this kind of transactions. ## [1.9.4](https://github.com/ledgerhq/app-ethereum/compare/1.9.3...1.9.4) - 2021-9-14 diff --git a/Makefile b/Makefile index 32ceebd..06a0e6a 100755 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ APP_LOAD_PARAMS += --path "1517992542'/1101353413'" APPVERSION_M=1 APPVERSION_N=9 -APPVERSION_P=4 +APPVERSION_P=5 APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) APP_LOAD_FLAGS= --appFlags 0x240 --dep Ethereum:$(APPVERSION) diff --git a/src/main.c b/src/main.c index 3820fd6..2133f41 100644 --- a/src/main.c +++ b/src/main.c @@ -92,6 +92,10 @@ void ui_idle(void) { ux_flow_init(0, ux_idle_flow, NULL); } +void ui_warning_contract_data(void) { + ux_flow_init(0, ux_warning_contract_data_flow, NULL); +} + unsigned int io_seproxyhal_touch_exit(__attribute__((unused)) const bagl_element_t *e) { // Go back to the dashboard os_sched_exit(0); diff --git a/src/ui_callbacks.h b/src/ui_callbacks.h index 26702bc..8b0a15a 100644 --- a/src/ui_callbacks.h +++ b/src/ui_callbacks.h @@ -16,6 +16,7 @@ unsigned int io_seproxyhal_touch_signMessage712_v0_cancel(const bagl_element_t * unsigned int io_seproxyhal_touch_eth2_address_ok(const bagl_element_t *e); void ui_idle(void); +void ui_warning_contract_data(void); void io_seproxyhal_send_status(uint32_t sw); void format_signature_out(const uint8_t *signature); diff --git a/src/ui_flow.c b/src/ui_flow.c index d88732f..b6b2fa3 100644 --- a/src/ui_flow.c +++ b/src/ui_flow.c @@ -2,7 +2,7 @@ #include "ui_callbacks.h" void display_settings(const ux_flow_step_t* const start_step); -void switch_settings_contract_data(void); +void switch_settings_blind_signing(void); void switch_settings_display_data(void); void switch_settings_display_nonce(void); @@ -54,9 +54,9 @@ UX_FLOW(ux_idle_flow, UX_STEP_CB( ux_settings_flow_1_step, bnnn_paging, - switch_settings_contract_data(), + switch_settings_blind_signing(), { - .title = "Contract data", + .title = "Blind signing", .text = strings.common.fullAddress, }); @@ -83,11 +83,11 @@ UX_STEP_CB( UX_STEP_CB( ux_settings_flow_1_step, bnnn, - switch_settings_contract_data(), + switch_settings_blind_signing(), { - "Contract data", - "Allow contract data", - "in transactions", + "Blind signing", + "Enable transaction", + "blind signing", strings.common.fullAddress, }); @@ -132,7 +132,7 @@ UX_FLOW(ux_settings_flow, &ux_settings_flow_4_step); void display_settings(const ux_flow_step_t* const start_step) { - strlcpy(strings.common.fullAddress, (N_storage.dataAllowed ? "Allowed" : "NOT Allowed"), 12); + strlcpy(strings.common.fullAddress, (N_storage.dataAllowed ? "Enabled" : "NOT Enabled"), 12); strlcpy(strings.common.fullAddress + 12, (N_storage.contractDetails ? "Displayed" : "NOT Displayed"), 26 - 12); @@ -142,7 +142,7 @@ void display_settings(const ux_flow_step_t* const start_step) { ux_flow_init(0, ux_settings_flow, start_step); } -void switch_settings_contract_data() { +void switch_settings_blind_signing() { uint8_t value = (N_storage.dataAllowed ? 0 : 1); nvm_write((void*) &N_storage.dataAllowed, (void*) &value, sizeof(uint8_t)); display_settings(&ux_settings_flow_1_step); @@ -159,3 +159,29 @@ void switch_settings_display_nonce() { nvm_write((void*) &N_storage.displayNonce, (void*) &value, sizeof(uint8_t)); display_settings(&ux_settings_flow_3_step); } + +////////////////////////////////////////////////////////////////////// +// clang-format off +#if defined(TARGET_NANOS) +UX_STEP_CB( + ux_warning_contract_data_step, + bnnn_paging, + ui_idle(), + { + "Error", + "Blind signing must be enabled in Settings", + }); +#elif defined(TARGET_NANOX) +UX_STEP_CB( + ux_warning_contract_data_step, + pnn, + ui_idle(), + { + &C_icon_crossmark, + "Blind signing must be", + "enabled in Settings", + }); +#endif +// clang-format on + +UX_FLOW(ux_warning_contract_data_flow, &ux_warning_contract_data_step); \ No newline at end of file diff --git a/src/ui_flow.h b/src/ui_flow.h index 927f5e2..8797b95 100644 --- a/src/ui_flow.h +++ b/src/ui_flow.h @@ -5,6 +5,8 @@ extern const ux_flow_step_t* const ux_idle_flow[]; +extern const ux_flow_step_t* const ux_warning_contract_data_flow[]; + extern const ux_flow_step_t* const ux_settings_flow[]; extern const ux_flow_step_t* const ux_display_public_flow[]; diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index cec6536..7ebdb2f 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -81,6 +81,7 @@ customStatus_e customProcessor(txContext_t *context) { if (fieldPos == 0) { // not reached if a plugin is available if (!N_storage.dataAllowed) { PRINTF("Data field forbidden\n"); + ui_warning_contract_data(); return CUSTOM_FAULT; } if (!N_storage.contractDetails) { @@ -407,6 +408,7 @@ void finalizeParsing(bool direct) { if (tmpContent.txContent.dataPresent && !N_storage.dataAllowed) { reportFinalizeError(direct); + ui_warning_contract_data(); if (!direct) { return; } diff --git a/src_features/signTx/ui_flow_signTx.c b/src_features/signTx/ui_flow_signTx.c index b508ee5..8f6a974 100644 --- a/src_features/signTx/ui_flow_signTx.c +++ b/src_features/signTx/ui_flow_signTx.c @@ -187,12 +187,12 @@ UX_STEP_NOCB( .text = strings.common.nonce, }); -UX_STEP_NOCB(ux_approval_data_warning_step, +UX_STEP_NOCB(ux_approval_blind_signing_warning_step, pbb, { &C_icon_warning, - "Data", - "Present", + "Blind", + "Signing", }); // clang-format on @@ -203,7 +203,7 @@ void ux_approve_tx(bool fromPlugin) { ux_approval_tx_flow[step++] = &ux_approval_review_step; if (!fromPlugin && tmpContent.txContent.dataPresent && !N_storage.contractDetails) { - ux_approval_tx_flow[step++] = &ux_approval_data_warning_step; + ux_approval_tx_flow[step++] = &ux_approval_blind_signing_warning_step; } if (fromPlugin) { diff --git a/tests/build_local_test_elfs.sh b/tests/build_local_test_elfs.sh index 38777eb..dd84b45 100755 --- a/tests/build_local_test_elfs.sh +++ b/tests/build_local_test_elfs.sh @@ -1,8 +1,8 @@ #!/bin/bash # FILL THESE WITH YOUR OWN SDKs PATHS -NANOS_SDK=$TWO -NANOX_SDK=$X +# NANOS_SDK= +# NANOX_SDK= # list of apps required by tests that we want to build here appnames=("ethereum" "ethereum_classic") diff --git a/tests/snapshots/deposit/nanos/data_present.png b/tests/snapshots/deposit/nanos/data_present.png deleted file mode 100644 index 3bb21d5164ea0c85c0d5e892a30bde63fbe0ba4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfg9=ba4!+V0?SBXw|-(33}7I@it>tS?pVd>L~^RD12NNk>ZLm`<(IjRFbDh^;F*TB5~t zN;$(~!pwJ@KV+m#kd(4p(%AO$#i7j^HzrC-nejIB@LC(Ct1Pf-YI97>kVxT^Vw<@z zaYAM2VTEEd@p-O?mz(%(_^{sO!iRVh9-|X`Rwqtye0D}`S+H=xzUae!XYNYzrI_)u z8_jO(qwQjOrV5`^dD(d{^G{y*@YU#S@A#$}1_&veA*O+2$ZWx~x9b1t@~t2#6DN&{89r%hPc z*wzb_$XEajJrSl;B~jd$SL*sK-)1oP)}fLtAm=aRbdFQ3%{DV91LK#$)78&qol`;+ E0G;pJw*UYD diff --git a/tests/snapshots/deposit/nanox/data_present.png b/tests/snapshots/deposit/nanox/data_present.png deleted file mode 100644 index dd2bbf9a140d63ed545d6189a881b44afa3ea094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|^E>ba4!+V0?S<;@aD8A`BNF zI?eU@uj;GY#W90H(dMw8OBc{pzGH_U2HZat8lx8xf{S=YDMN zdb>O1&l84ucS2Uwtm-P)k`7sMM>kI^WM5;~sg;lNLqck_r*`dT-w%}D-DN#B_~_C{ zOM(iQe>xeW72?PK;mLHass3SwL6)I&Lhb>vpQ!rO`5|*c>_S^lJw4d#)p~0CsvqWB z`&?U3-F?*Sb<}*7#mW_bJdb+1KAjx8Vo&rRht%JCTK1L=>hVh+%{{dgj28uc^m`f& z442$BAWuu@ZtUF#4h!2K3Zm~rw*Alh*ckFJUrWpGY_opg!XS|KcUI2PdKaQ6TCTO6 zYid`w7s#ETIK_abu6wj(QPHX$!GSx0?gBax=wj=s-Cd`aSA1yHs&juDQn>QR+^)$$ z9Z5~>@*Yp`2UIQ(DqOiEcxJ-Kr6K=ZT%Rs70@|}ID6lXPY)^=mmY!DqA|OBLCky+B m6zOc3`%vNv;cTGrKgPsu{N8I1NdEz*7zR&QKbLh*2~7ZG796Dj diff --git a/tests/snapshots/approve/nanos/review.png b/tests/snapshots/nanos_approve_dai_tokens/00000.png similarity index 100% rename from tests/snapshots/approve/nanos/review.png rename to tests/snapshots/nanos_approve_dai_tokens/00000.png diff --git a/tests/snapshots/approve/nanos/type.png b/tests/snapshots/nanos_approve_dai_tokens/00001.png similarity index 100% rename from tests/snapshots/approve/nanos/type.png rename to tests/snapshots/nanos_approve_dai_tokens/00001.png diff --git a/tests/snapshots/approve/nanos/amount.png b/tests/snapshots/nanos_approve_dai_tokens/00002.png similarity index 100% rename from tests/snapshots/approve/nanos/amount.png rename to tests/snapshots/nanos_approve_dai_tokens/00002.png diff --git a/tests/snapshots/approve/nanos/address_1.png b/tests/snapshots/nanos_approve_dai_tokens/00003.png similarity index 100% rename from tests/snapshots/approve/nanos/address_1.png rename to tests/snapshots/nanos_approve_dai_tokens/00003.png diff --git a/tests/snapshots/approve/nanos/address_2.png b/tests/snapshots/nanos_approve_dai_tokens/00004.png similarity index 100% rename from tests/snapshots/approve/nanos/address_2.png rename to tests/snapshots/nanos_approve_dai_tokens/00004.png diff --git a/tests/snapshots/approve/nanos/address_3.png b/tests/snapshots/nanos_approve_dai_tokens/00005.png similarity index 100% rename from tests/snapshots/approve/nanos/address_3.png rename to tests/snapshots/nanos_approve_dai_tokens/00005.png diff --git a/tests/snapshots/approve/nanos/fees.png b/tests/snapshots/nanos_approve_dai_tokens/00006.png similarity index 100% rename from tests/snapshots/approve/nanos/fees.png rename to tests/snapshots/nanos_approve_dai_tokens/00006.png diff --git a/tests/snapshots/approve/nanos/accept.png b/tests/snapshots/nanos_approve_dai_tokens/00007.png similarity index 100% rename from tests/snapshots/approve/nanos/accept.png rename to tests/snapshots/nanos_approve_dai_tokens/00007.png diff --git a/tests/snapshots/nanos_approve_dai_tokens/00008.png b/tests/snapshots/nanos_approve_dai_tokens/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/chainid/nanos/review.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00000.png similarity index 100% rename from tests/snapshots/chainid/nanos/review.png rename to tests/snapshots/nanos_deposit_eth_compound_blind/00000.png diff --git a/tests/snapshots/nanos_deposit_eth_compound_blind/00001.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..942f5a628dec95d0c73c94988e289ee4baf87582 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfi`(ba4!+V0?Qpu;`WpgUdm4 zt!Mw(=k<4HX@?0Gyh%9FccHBN{;o+!N_1XzO%03nOtRu*OuZ_$79_;OoxUr{N`x_$ zUuxY69^U3N7Yt6^S&}%xva5CP#Gg}mj4nU-+q0<6F)hQPt*!UWvWF|gzAa0fu+x*- zC|rtdrgGE`>6r^3=JC33|DeNb;`4udtMX*aU9IUEH%x3o4m+RZ;dNJ85R>Kb?6lMb zNvR1l>mrzqri2_Jp0wzgvKe5naLy${Em`ut~gNo@qyeBSf0Lrn=TnIGZ%*grh?v!uOjwqj~ zna!4Br|NuIVRI(XpZ=x_Aejt_ly4b{`YC3-my>ngbOJr^3=E*lK+CF2llXxy?L2e& z@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_disable_blind_signing/00000.png b/tests/snapshots/nanos_disable_blind_signing/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_disable_blind_signing/00001.png b/tests/snapshots/nanos_disable_blind_signing/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..78f3ae440fd061fe3cd225eff7e875fba929eacf GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfg`yx;TbZFupzL*mv7N#O2`i zmS6wa|8@5{9BFwwvDa}zuSZzt{-Q}owuwDG;<78VAjHqD(c&oa&VMS zTr~M*P>Ioh-!8v2R`%Q4GpEX&Q8~&zQ;*eX$%_<^k50?HFP`MlWSgl76p%=Hx5Thp zWG;_UY?tCuRml`PuZt&3G~<>yJX^>2&ZSKRsKUc=$q$cb?ILr}@N4QVbx31l-#qcB zsALe2=7dP!WHzJ!E^IUVQ}j-rSyX6l)O<$a@=^s>&3#^uTtHV$PuT_3=fl!ct~ueR z+9al#<-K5*vU68?Z#qa!)wwIZw_W5!&g998N1Y!#wu#(+5~T3?LWP=hS8kBzgi1Aq zJ>HFH)-HVkc3X_sN2h1ofC}C{=mH8lw28!xkF?)&o8RshX+D#~ z7dGvY_Dsd2J$zxR#!DhXlcR4P^a=txPa>sF*5Z-IoQ%;uFG&(&l) zl_kZO5~jLf&7z0>DPhVB)+|VzWSKD|C2Z41shQ?Rt8Ya(9#$|myXTf={D$wP-{ z>oX)kZkhwKF_*Xb%oT$ZcOEorXIM;Fn3z>@+2F(lgA+WwKoaP<`I8m`bu7PaF}tm~ z&5>>9LdKb%Y?3Kzk}3PHG@O~9qBfIRGUZ&tW1W;`Z9v@%9=c~Nc*tXR&Lu6&VuB-3 z<-eUkKLP#zg%ah(kkI(#U9*Fz&w z#-|gd@=m;wnsC!p;d37Ei9MdoM)hkMXBtOVvKcuajx~z+d*+;SF72rfNQuk|8IwPO zhZQzwJEUDNaBgd3p1F{5X6)g{GZzY+p9zM|b3Cl@Sil0+c z<{dm`obkiN2yA6>IMC>oQfxEb1q1Zld4Ud5_?!r#mP$>i%zS9XE-4i!6ri_ViZ8{^ z7w9DW%MEArnNFqZ@t*jzpSRwqu_>D>l2K;8N9OiqpInYuB{ nwiV30btpB9d-_Ts=bL<{$o6E3u>LE+xMlEk^>bP0l+XkKgZ$Tj literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_disable_blind_signing/00004.png b/tests/snapshots/nanos_disable_blind_signing/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ad84fa4c9cc7ae289ababb8e8767f7cefed828 GIT binary patch literal 566 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfji0ba4!+V0?Qpx@b-WgUi8S zmaYF;ueJ*1LMp`^|cd@yp6iTF8AdEyXT#C&JL9s-EzMaI&Yi${8`9< zN6*#4GU#yInMI5>pk!>KusI`QqNJ2rN}oY78*lTO*(Z2-K?)?L{&_tMHR@(d zVVk*-ab~QMGqX`M$fm_Ua~gS!PF(nqE441~*(#v1C*EX5oT%B^)_P`Q+B&~BwiL6J zd2Y{m(#|b-cp9kAA86{jHpge)raVUOf&qEiyeHNGotX)tLU>Q?F)7^5CMgvs6p$AU zbYuLoMAv7xfhuM<6z!hImh#WI5Jc6@-Vy80Y*atXGKd-I51=!pjhum=cRSp5rrlIw z^J>PK<(Ur8R!U8%%zTysa+E{bV#b-RAUB7fjG1<3-ps`(FEpG{lnP5}YZINhFmb}q z)oqSx85YemwKF9k-fTSs4U~%wXBH)9H~?i&osm2N)E0blkN4r_rgLtdd0T4K-NrxB za&zbA2@4;7+naXIrLE1et&MjkKhT(aOA^BmD{S@#3Z*GJAC~0M*nWD}j@VmA-dZ2$lO literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_disable_blind_signing/00005.png b/tests/snapshots/nanos_disable_blind_signing/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..28e70e8bc22cd0c7f2b114c25504765b2c7b1592 GIT binary patch literal 614 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfi$Qx;TbZFupw)7<4;|!R4T_ z-r0ZRHu9h6L_ZYU7!dI>FmED*5n)}qyMo{vg+#N%Fy zE_W6T__ip~`B}ZG!e?En36)~p)ykVMHJowIba*DHV>7GGGc9XI$}%<(YHQ=2+1s{T zDl8>KLW)fiNPkOuIMGDG*ksKKAKnvty3br_IOE1_6nt34*p$ZzC~?weE)oe$5J zdY2^uRB0;|kOy?#6{!i4Ku2ksDipsyw3aQ!&)==BEt=_6H(Ltd;zZYHFM(>D9DXik zoOzkiMB(%4R&gVfIrCzejr8^Qs5u{g=?Rpd)ljsWai;#&hBICuXSSWWvO#h4#SMza zKsim`6MuqvfevI#$w7hziMua0 zoM|_$i8wq@M`kWaMf*t}-uFtI)y3WAX3HHRKeIp zVe>_xz=r9qwm{yA3kAC_IUJrB_U&51ua-0S!oH~)o6eb+ovP1!BIm?~1|B05AEOf& z3{EOIA6D6X@q;pN^O@- z;Qq|-uJ1;k!0eR%}dZ70wNT%?)Kbtt! z_9W1g!5|O%7&#wqJLAkNZ3OkJ!AT$9^BanoW?CBsGaHqsENgRYV@rXeHlRH#6ZN&L zCog22IUN`@+f8et4{JwSTFnFs$1yTmjiJ`OI>ueLkT0ny~PpB+Hb`Va!JVJ(-Qx=RGXR&|ZH3s=2{y4(DSd?*@viR&t z=bHLrdfFFAi;Jt?Wu3cYhlZrWfszN0{HK%%^;~0_p%)V~g@?l`u&B^b;YVM0vgXbm zFZ6z#V)g14u82gJ|cd1FeBo|&q-UYv%dYk`*P z?Cx&vm3N~G+n3Ypn6rVy$@M^GenN9j0ri|^1uDK7^MFa*zNnCkF>Q-z h&$XtDQ3g@f?CJZmIXzZhYz2lDgQu&X%Q~loCICmNg$4is literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_disable_blind_signing/00008.png b/tests/snapshots/nanos_disable_blind_signing/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/deposit/nanos/review.png b/tests/snapshots/nanos_transfer_112233445566_network/00000.png similarity index 100% rename from tests/snapshots/deposit/nanos/review.png rename to tests/snapshots/nanos_transfer_112233445566_network/00000.png diff --git a/tests/snapshots/chainid/nanos/amount_1.png b/tests/snapshots/nanos_transfer_112233445566_network/00001.png similarity index 100% rename from tests/snapshots/chainid/nanos/amount_1.png rename to tests/snapshots/nanos_transfer_112233445566_network/00001.png diff --git a/tests/snapshots/chainid/nanos/amount_2.png b/tests/snapshots/nanos_transfer_112233445566_network/00002.png similarity index 100% rename from tests/snapshots/chainid/nanos/amount_2.png rename to tests/snapshots/nanos_transfer_112233445566_network/00002.png diff --git a/tests/snapshots/chainid/nanos/amount_3.png b/tests/snapshots/nanos_transfer_112233445566_network/00003.png similarity index 100% rename from tests/snapshots/chainid/nanos/amount_3.png rename to tests/snapshots/nanos_transfer_112233445566_network/00003.png diff --git a/tests/snapshots/chainid/nanos/address_1.png b/tests/snapshots/nanos_transfer_112233445566_network/00004.png similarity index 100% rename from tests/snapshots/chainid/nanos/address_1.png rename to tests/snapshots/nanos_transfer_112233445566_network/00004.png diff --git a/tests/snapshots/chainid/nanos/address_2.png b/tests/snapshots/nanos_transfer_112233445566_network/00005.png similarity index 100% rename from tests/snapshots/chainid/nanos/address_2.png rename to tests/snapshots/nanos_transfer_112233445566_network/00005.png diff --git a/tests/snapshots/chainid/nanos/address_3.png b/tests/snapshots/nanos_transfer_112233445566_network/00006.png similarity index 100% rename from tests/snapshots/chainid/nanos/address_3.png rename to tests/snapshots/nanos_transfer_112233445566_network/00006.png diff --git a/tests/snapshots/chainid/nanos/network.png b/tests/snapshots/nanos_transfer_112233445566_network/00007.png similarity index 100% rename from tests/snapshots/chainid/nanos/network.png rename to tests/snapshots/nanos_transfer_112233445566_network/00007.png diff --git a/tests/snapshots/chainid/nanos/fees.png b/tests/snapshots/nanos_transfer_112233445566_network/00008.png similarity index 100% rename from tests/snapshots/chainid/nanos/fees.png rename to tests/snapshots/nanos_transfer_112233445566_network/00008.png diff --git a/tests/snapshots/deposit/nanos/accept.png b/tests/snapshots/nanos_transfer_112233445566_network/00009.png similarity index 100% rename from tests/snapshots/deposit/nanos/accept.png rename to tests/snapshots/nanos_transfer_112233445566_network/00009.png diff --git a/tests/snapshots/nanos_transfer_112233445566_network/00010.png b/tests/snapshots/nanos_transfer_112233445566_network/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/eip1559/nanos/review.png b/tests/snapshots/nanos_transfer_bsc/00000.png similarity index 100% rename from tests/snapshots/eip1559/nanos/review.png rename to tests/snapshots/nanos_transfer_bsc/00000.png diff --git a/tests/snapshots/send_bsc/nanos/amount_1.png b/tests/snapshots/nanos_transfer_bsc/00001.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/amount_1.png rename to tests/snapshots/nanos_transfer_bsc/00001.png diff --git a/tests/snapshots/send/nanos/amount_2.png b/tests/snapshots/nanos_transfer_bsc/00002.png similarity index 100% rename from tests/snapshots/send/nanos/amount_2.png rename to tests/snapshots/nanos_transfer_bsc/00002.png diff --git a/tests/snapshots/send/nanos/amount_3.png b/tests/snapshots/nanos_transfer_bsc/00003.png similarity index 100% rename from tests/snapshots/send/nanos/amount_3.png rename to tests/snapshots/nanos_transfer_bsc/00003.png diff --git a/tests/snapshots/send/nanos/address_1.png b/tests/snapshots/nanos_transfer_bsc/00004.png similarity index 100% rename from tests/snapshots/send/nanos/address_1.png rename to tests/snapshots/nanos_transfer_bsc/00004.png diff --git a/tests/snapshots/send/nanos/address_2.png b/tests/snapshots/nanos_transfer_bsc/00005.png similarity index 100% rename from tests/snapshots/send/nanos/address_2.png rename to tests/snapshots/nanos_transfer_bsc/00005.png diff --git a/tests/snapshots/send/nanos/address_3.png b/tests/snapshots/nanos_transfer_bsc/00006.png similarity index 100% rename from tests/snapshots/send/nanos/address_3.png rename to tests/snapshots/nanos_transfer_bsc/00006.png diff --git a/tests/snapshots/send_bsc/nanos/network.png b/tests/snapshots/nanos_transfer_bsc/00007.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/network.png rename to tests/snapshots/nanos_transfer_bsc/00007.png diff --git a/tests/snapshots/send_bsc/nanos/fees.png b/tests/snapshots/nanos_transfer_bsc/00008.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/fees.png rename to tests/snapshots/nanos_transfer_bsc/00008.png diff --git a/tests/snapshots/eip1559/nanos/accept.png b/tests/snapshots/nanos_transfer_bsc/00009.png similarity index 100% rename from tests/snapshots/eip1559/nanos/accept.png rename to tests/snapshots/nanos_transfer_bsc/00009.png diff --git a/tests/snapshots/nanos_transfer_bsc/00010.png b/tests/snapshots/nanos_transfer_bsc/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/send/nanos/review.png b/tests/snapshots/nanos_transfer_eip1559/00000.png similarity index 100% rename from tests/snapshots/send/nanos/review.png rename to tests/snapshots/nanos_transfer_eip1559/00000.png diff --git a/tests/snapshots/eip1559/nanos/amount.png b/tests/snapshots/nanos_transfer_eip1559/00001.png similarity index 100% rename from tests/snapshots/eip1559/nanos/amount.png rename to tests/snapshots/nanos_transfer_eip1559/00001.png diff --git a/tests/snapshots/eip1559/nanos/address_1.png b/tests/snapshots/nanos_transfer_eip1559/00002.png similarity index 100% rename from tests/snapshots/eip1559/nanos/address_1.png rename to tests/snapshots/nanos_transfer_eip1559/00002.png diff --git a/tests/snapshots/eip1559/nanos/address_2.png b/tests/snapshots/nanos_transfer_eip1559/00003.png similarity index 100% rename from tests/snapshots/eip1559/nanos/address_2.png rename to tests/snapshots/nanos_transfer_eip1559/00003.png diff --git a/tests/snapshots/eip1559/nanos/address_3.png b/tests/snapshots/nanos_transfer_eip1559/00004.png similarity index 100% rename from tests/snapshots/eip1559/nanos/address_3.png rename to tests/snapshots/nanos_transfer_eip1559/00004.png diff --git a/tests/snapshots/eip1559/nanos/fees.png b/tests/snapshots/nanos_transfer_eip1559/00005.png similarity index 100% rename from tests/snapshots/eip1559/nanos/fees.png rename to tests/snapshots/nanos_transfer_eip1559/00005.png diff --git a/tests/snapshots/send/nanos/accept.png b/tests/snapshots/nanos_transfer_eip1559/00006.png similarity index 100% rename from tests/snapshots/send/nanos/accept.png rename to tests/snapshots/nanos_transfer_eip1559/00006.png diff --git a/tests/snapshots/nanos_transfer_eip1559/00007.png b/tests/snapshots/nanos_transfer_eip1559/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_bsc/nanos/review.png b/tests/snapshots/nanos_transfer_ethereum/00000.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/review.png rename to tests/snapshots/nanos_transfer_ethereum/00000.png diff --git a/tests/snapshots/send/nanos/amount_1.png b/tests/snapshots/nanos_transfer_ethereum/00001.png similarity index 100% rename from tests/snapshots/send/nanos/amount_1.png rename to tests/snapshots/nanos_transfer_ethereum/00001.png diff --git a/tests/snapshots/send_bsc/nanos/amount_2.png b/tests/snapshots/nanos_transfer_ethereum/00002.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/amount_2.png rename to tests/snapshots/nanos_transfer_ethereum/00002.png diff --git a/tests/snapshots/send_bsc/nanos/amount_3.png b/tests/snapshots/nanos_transfer_ethereum/00003.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/amount_3.png rename to tests/snapshots/nanos_transfer_ethereum/00003.png diff --git a/tests/snapshots/send_bsc/nanos/address_1.png b/tests/snapshots/nanos_transfer_ethereum/00004.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/address_1.png rename to tests/snapshots/nanos_transfer_ethereum/00004.png diff --git a/tests/snapshots/send_bsc/nanos/address_2.png b/tests/snapshots/nanos_transfer_ethereum/00005.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/address_2.png rename to tests/snapshots/nanos_transfer_ethereum/00005.png diff --git a/tests/snapshots/send_bsc/nanos/address_3.png b/tests/snapshots/nanos_transfer_ethereum/00006.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/address_3.png rename to tests/snapshots/nanos_transfer_ethereum/00006.png diff --git a/tests/snapshots/send/nanos/fees.png b/tests/snapshots/nanos_transfer_ethereum/00007.png similarity index 100% rename from tests/snapshots/send/nanos/fees.png rename to tests/snapshots/nanos_transfer_ethereum/00007.png diff --git a/tests/snapshots/send_bsc/nanos/accept.png b/tests/snapshots/nanos_transfer_ethereum/00008.png similarity index 100% rename from tests/snapshots/send_bsc/nanos/accept.png rename to tests/snapshots/nanos_transfer_ethereum/00008.png diff --git a/tests/snapshots/nanos_transfer_ethereum/00009.png b/tests/snapshots/nanos_transfer_ethereum/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_etc/nanos/review.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00000.png similarity index 100% rename from tests/snapshots/send_etc/nanos/review.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00000.png diff --git a/tests/snapshots/nanos_transfer_ethereum_5234_network/00001.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd3e38bacb6946307a7e132d42d79b6a8ebee6d GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfcCkba4!+V0?QpFmH|ngUi9| z9sB+_{$AW1P?mCS+mi@SvBM#q_jgS^QlkH=t=H_XN762S#?;GVxga5a?);L&CE84< zBux}PE1M`7o4iT6m+8>f=9re@@GMm9+yX{PDZj-Jy`?7n3}800mQ0zj@S#rFxit?V zY9vzH*g&X^m)&T0TkK)KXTe7HH&5L>$-{f%jTA&~p9|0|Hc6=omCG4t=4akG$zuex zjEj5ywT3f(ZEfB_i$K!nlAiKNExR6J$vksm;;;I!xRs1EnSr`~8c9mA&1`Oi>s-l} z!Uq&t$T%}xFkqgkf^qF4#+mzpxPBeu%yjPaQWIwCxwW;WGo5l~HoDwus_=QkhYJm7 zN(zlkY;E4uAX2Cbdh_u!?T;G+*9 literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_etc/nanos/amount_2.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00002.png similarity index 100% rename from tests/snapshots/send_etc/nanos/amount_2.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00002.png diff --git a/tests/snapshots/send_etc/nanos/amount_3.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00003.png similarity index 100% rename from tests/snapshots/send_etc/nanos/amount_3.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00003.png diff --git a/tests/snapshots/send_etc/nanos/address_1.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00004.png similarity index 100% rename from tests/snapshots/send_etc/nanos/address_1.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00004.png diff --git a/tests/snapshots/send_etc/nanos/address_2.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00005.png similarity index 100% rename from tests/snapshots/send_etc/nanos/address_2.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00005.png diff --git a/tests/snapshots/send_etc/nanos/address_3.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00006.png similarity index 100% rename from tests/snapshots/send_etc/nanos/address_3.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00006.png diff --git a/tests/snapshots/send/nanos/network.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00007.png similarity index 100% rename from tests/snapshots/send/nanos/network.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00007.png diff --git a/tests/snapshots/nanos_transfer_ethereum_5234_network/00008.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..8b996b58a1ec0043e05a39e52d99ce49521f5116 GIT binary patch literal 561 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfjh`ba4!+V0?S<_9P{D2Iqr| z`M&&@U&B6g#fK@G39{B^n`3qv9lc+r*7-Ezit)LUYsQ{B#}yaM+3K2ZJNZZvkF(KjQp%**X8vFMuy3Y$pJn*fOlp&zxsVZr@-t_oENk;j%b1Z8clX%t z2@4am9Mas`Bva&;F-ih;PH=qI#$)vU!4dV$9o}tij?bn`m8G<`?Us6%P@Cp96s={P z`Lx+Yp*Z((6tmIk_K6E0-a59FEoBPfj{eKPE=hD0RpVDNPHb6Mw<&;$TB@9Js* literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_etc/nanos/accept.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00009.png similarity index 100% rename from tests/snapshots/send_etc/nanos/accept.png rename to tests/snapshots/nanos_transfer_ethereum_5234_network/00009.png diff --git a/tests/snapshots/nanos_transfer_ethereum_5234_network/00010.png b/tests/snapshots/nanos_transfer_ethereum_5234_network/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00000.png b/tests/snapshots/nanos_transfer_ethereum_clone/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2994983f84cf76ab587bac356d5afe297c0e0632 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfcyxba4!+V0?SfW}LV) zm52AlpJ_b2>@)W(0ade0N=>L#7k{_%p*K+Izf)VA1-(C=WRZ-BymEd z+ycg#=gr>vKI=O3DZ$93W?LaYQ1QY>pxO%?Y&v*&<#TnOD>)zbXF6qTB9pT3N&!&M z3dWi9&EBnj=ymuLi`0al9u7OFx80vqnaz8`W+_{Wop8XrwTVif&jYR3;ytm)i1F!7 zQ=gO!i4>qCfqpe|KCDm-Wb*LtR{=T`$TJ28kKEHk+7p0Y?mPqLwy~wK0ofM}OcabW z9iDmf0+pZOF#@XZFL)Sha%TzS%!Lnq%!RyR`IX+l PXlL+r^>bP0l+XkKp5EPW literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_etc/nanos/amount_1.png b/tests/snapshots/nanos_transfer_ethereum_clone/00001.png similarity index 100% rename from tests/snapshots/send_etc/nanos/amount_1.png rename to tests/snapshots/nanos_transfer_ethereum_clone/00001.png diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00002.png b/tests/snapshots/nanos_transfer_ethereum_clone/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..11ae75e8391d69f363be24e20c136f0ee32b13d0 GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfi@&ba4!+V0?Qp&`&v1#O2^* z)#v}j=g8l@cDdkcYoY6pnS>%$F{b` zI|@>Gt&L20W?nQ%abpIlU7F~gmKh->HuL_gLl;l>u%%3EyV!6h!{M18P*ySp$N;L7 zzqH{5k0j70KI!{w8E3k-waKq!oC#Fd$75t7bF@`C)bY?cP=5SXJ5Ka6+Wjt_GC6%9`D!IrY`NDl40?;i1&oe%^$OQc$deoVw}03 zQ{y~P)v7kvXQ8~^XMn+A4Ww2}O}GiP)$MTKnG6sG-b{T(V_>|+T?K~mnM)fkf6z1XW;Sw81BOR1&|&@D?$YFcvsLlQ$7&?QRF zAYZnfnGM9i5S+g#@x&fi2TR*Ey_cPDTi9+vP`{bucKb|_So<*tn4lRvUHx3vIVCg! E0D4U}bN~PV literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00003.png b/tests/snapshots/nanos_transfer_ethereum_clone/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e0420108494b969f9c050ba46e44f5c255fa1f1b GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfcCjba4!+V0?Qpu2D;LWW?VAh6@j^#SRf&uFm zFwXq%#B9{w=J;$fTS|sRN*i0sz0}8CQWF+FG?Loq!X}xLVUg+ZOre>_$Ry@yvv#({ z#D$3yB&FD9E@T8D=fj<67CyXCFk$Cv_HcD$6NTao2`Qlbgr7n{X`pTgkimXZd`A1P z6ifi~WzFubWt`c}!~0(r$Oo#noaorrwz{H#mG^YD%?_rS3lo2q%k2qfHc~e-QTUu{ zWWr;l&bxo2L{A6 zpc$$Q&a7aZ=`S^5=FwwDTiG{fTAa{P0E+>AleTGN&Gm*eIc8!R4ry-uX+WpU0lIOs tK)|%jT%F+C5zDr1^vO-0c?+mDU$Ss>;+dSqdccTd@O1TaS?83{1OS_=#2f$s literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00004.png b/tests/snapshots/nanos_transfer_ethereum_clone/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..f979f716022e2492f86f9dcc9ba56e7622cefd3e GIT binary patch literal 809 zcmXAoe@GKy7{|9(n~5hP67E%TxlI3%nCJX45Or=&tu&RQiKdN?buLSBQL_Z+{y3DG zY?{iUh`Q9wa0@{cM3O;Vb=jO)DH9u$bQ|Tj}*;XgammwB9|D81-LZ`XFR^n$fF;SI`v$~Bw#9iRXBdhZ99sk z8`td4mwb9bhHPRif?hDQUYA`V<=)BC+XvR2WdHhQH%(=F&8$W! zMzihGN~OCp&ZyB>K|(3A9qk4;oWdE&K?p9d1`WGy=_LX@LX2!min2l=M2slbD{MUb5t%PAS0uT7^VLjsV|_GCBElca4UkexH1riZL?{w_s8D zhPh}VMWu?qg17w-P`Ca1BSD&uhCu^u-mehg4xN2^R41JPWs5RGq$;lUv|0~4VA#RtV2sDi0w4xX;L}5VF-pN5>w{FKA#Ksj z(n4Y$PT<%Aoev$v98_+>(id8Y3Br!Sz#gK4J6t=cyPQhMiQAOXUrtXmk-?m1hO!Wp) dMc)c+e?_|s$wq~xc@nMwFF&VHJ)V8j@(=l|VF&;K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00005.png b/tests/snapshots/nanos_transfer_ethereum_clone/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..93c90c542343a4423166f143ee5f43f335c73b96 GIT binary patch literal 837 zcmXAo4M-DV7{_;A%@R)~MB5oQ6F(yHVLVt$ZA=)^QU zBa$mqOLSqW0}B(ikSSa-LTA~M^?~9*LQSM{U?0zWaUbu!FYohz{?G4uuQ5L_n+PNW zB@zjt%~2P?XoE+-Qws0-{S~ni2_B?XXBJwqm5I{@W!f;+L`=i;zdOFE7GI3q(@a%%ggCfQn@u^+iip^<%vKAXE_sg2^OTwK8cYgpA)QlwvHdYYcoX z2bgK!RAU5Mt$@`d>q?fj?;F7Qi1_QVD(7qn&>7r*=L5+dHSVGAOCb#lr3w}pAa_-p zlo_~48)j3Oa(4=Ih)@|!9sq;O08x*=RR=>ZP7Ur#7=~;jQXTRs>{ZCq#E)j6REz_9 zh=eA{H+q2|PIY6bIx&VnoGuofiBqpCec?p6Uhv)k^ddd4^G&t%9 zY-k2o(470o9Kb|1c*OH30!6??u5JhP6bM<+K|&{NI5fW_YOc}VaBX4v;R9>6F}@>e b9;QD-q}la_C0C<6;P;SdHF@d*Woi9CJYZeG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00006.png b/tests/snapshots/nanos_transfer_ethereum_clone/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..402c20d84b73864383ebc9f5a2cc87b175f5db3a GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfjh}ba4!+V0?Qpu$}+Z;wl?0GvNM-UO}LpM zky5uhal%ZHQK4dSYZ+%cwzcJ7bU5q>gz}StoRy3-c_mXaD%7>#FL-$Sd3dKc15MFpd>Y7XB)^&w=$kU2LncsOmxlb>jgobGR4RtRSIvkw{qJ) z-k{BNYMKd;QTzYAL~p5OZSof#4llR(=qVMJ($*$Ab77)uTE-4V=fhVFPUOsN*u=_P zev*f``Ha_Lh0T`?P5_w@bmoG=iJGR?wG$oFmOfn9wp(f$o7BG*4~6I6nAJ9Y(#_4S zx*0Q4Cd`zYu+#gQ-puxsHA;+6txb81;;$K;SOc`)`Eb{n3mcS-P1XR-G*4O9=9zYy zWlA>hi9IogRX%T%Vw>52vEj_tR;Wnvk2E8bnCKl>8qOS+%J|{VJNeAR_7fKhJRN>6 zWt_R(#K%Y*B*bf?@cHzid?OPZ*R-q|Qfe~~OJ_JdGiQ7n#BAiBxx@R}2R5LKwiNib zwJkq!XF{bkuSv~rHmSN0W~1w3?WueMPz z$jMOtJF#s}Y?8nbo644w2lP(7Qu7&Lh$$GG`0$>%lOd6E?`G%PjEacEho#sgfuXFQ zeWOb_8W?6gy!z_Ez}=wqxl_z;<{4*T7^Tcp+APW)4b*$#gTTy%593WQI2=|m1}X&# zr~*UES~!4j_tt_NTU!sW)0HX9eYhc;yFK@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_palm_network/00000.png b/tests/snapshots/nanos_transfer_palm_network/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2994983f84cf76ab587bac356d5afe297c0e0632 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfcyxba4!+V0?SfW}LV) zm52AlpJ_b2>@)W(0ade0N=>L#7k{_%p*K+Izf)VA1-(C=WRZ-BymEd z+ycg#=gr>vKI=O3DZ$93W?LaYQ1QY>pxO%?Y&v*&<#TnOD>)zbXF6qTB9pT3N&!&M z3dWi9&EBnj=ymuLi`0al9u7OFx80vqnaz8`W+_{Wop8XrwTVif&jYR3;ytm)i1F!7 zQ=gO!i4>qCfqpe|KCDm-Wb*LtR{=T`$TJ28kKEHk+7p0Y?mPqLwy~wK0ofM}OcabW z9iDmf0+pZOF#@XZFL)Sha%TzS%!Lnq%!RyR`IX+l PXlL+r^>bP0l+XkKp5EPW literal 0 HcmV?d00001 diff --git a/tests/snapshots/chainid/nanos/amount_1_palm.png b/tests/snapshots/nanos_transfer_palm_network/00001.png similarity index 100% rename from tests/snapshots/chainid/nanos/amount_1_palm.png rename to tests/snapshots/nanos_transfer_palm_network/00001.png diff --git a/tests/snapshots/nanos_transfer_palm_network/00002.png b/tests/snapshots/nanos_transfer_palm_network/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..11ae75e8391d69f363be24e20c136f0ee32b13d0 GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfi@&ba4!+V0?Qp&`&v1#O2^* z)#v}j=g8l@cDdkcYoY6pnS>%$F{b` zI|@>Gt&L20W?nQ%abpIlU7F~gmKh->HuL_gLl;l>u%%3EyV!6h!{M18P*ySp$N;L7 zzqH{5k0j70KI!{w8E3k-waKq!oC#Fd$75t7bF@`C)bY?cP=5SXJ5Ka6+Wjt_GC6%9`D!IrY`NDl40?;i1&oe%^$OQc$deoVw}03 zQ{y~P)v7kvXQ8~^XMn+A4Ww2}O}GiP)$MTKnG6sG-b{T(V_>|+T?K~mnM)fkf6z1XW;Sw81BOR1&|&@D?$YFcvsLlQ$7&?QRF zAYZnfnGM9i5S+g#@x&fi2TR*Ey_cPDTi9+vP`{bucKb|_So<*tn4lRvUHx3vIVCg! E0D4U}bN~PV literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_palm_network/00003.png b/tests/snapshots/nanos_transfer_palm_network/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e0420108494b969f9c050ba46e44f5c255fa1f1b GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfcCjba4!+V0?Qpu2D;LWW?VAh6@j^#SRf&uFm zFwXq%#B9{w=J;$fTS|sRN*i0sz0}8CQWF+FG?Loq!X}xLVUg+ZOre>_$Ry@yvv#({ z#D$3yB&FD9E@T8D=fj<67CyXCFk$Cv_HcD$6NTao2`Qlbgr7n{X`pTgkimXZd`A1P z6ifi~WzFubWt`c}!~0(r$Oo#noaorrwz{H#mG^YD%?_rS3lo2q%k2qfHc~e-QTUu{ zWWr;l&bxo2L{A6 zpc$$Q&a7aZ=`S^5=FwwDTiG{fTAa{P0E+>AleTGN&Gm*eIc8!R4ry-uX+WpU0lIOs tK)|%jT%F+C5zDr1^vO-0c?+mDU$Ss>;+dSqdccTd@O1TaS?83{1OS_=#2f$s literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_palm_network/00004.png b/tests/snapshots/nanos_transfer_palm_network/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..f979f716022e2492f86f9dcc9ba56e7622cefd3e GIT binary patch literal 809 zcmXAoe@GKy7{|9(n~5hP67E%TxlI3%nCJX45Or=&tu&RQiKdN?buLSBQL_Z+{y3DG zY?{iUh`Q9wa0@{cM3O;Vb=jO)DH9u$bQ|Tj}*;XgammwB9|D81-LZ`XFR^n$fF;SI`v$~Bw#9iRXBdhZ99sk z8`td4mwb9bhHPRif?hDQUYA`V<=)BC+XvR2WdHhQH%(=F&8$W! zMzihGN~OCp&ZyB>K|(3A9qk4;oWdE&K?p9d1`WGy=_LX@LX2!min2l=M2slbD{MUb5t%PAS0uT7^VLjsV|_GCBElca4UkexH1riZL?{w_s8D zhPh}VMWu?qg17w-P`Ca1BSD&uhCu^u-mehg4xN2^R41JPWs5RGq$;lUv|0~4VA#RtV2sDi0w4xX;L}5VF-pN5>w{FKA#Ksj z(n4Y$PT<%Aoev$v98_+>(id8Y3Br!Sz#gK4J6t=cyPQhMiQAOXUrtXmk-?m1hO!Wp) dMc)c+e?_|s$wq~xc@nMwFF&VHJ)V8j@(=l|VF&;K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_palm_network/00005.png b/tests/snapshots/nanos_transfer_palm_network/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..93c90c542343a4423166f143ee5f43f335c73b96 GIT binary patch literal 837 zcmXAo4M-DV7{_;A%@R)~MB5oQ6F(yHVLVt$ZA=)^QU zBa$mqOLSqW0}B(ikSSa-LTA~M^?~9*LQSM{U?0zWaUbu!FYohz{?G4uuQ5L_n+PNW zB@zjt%~2P?XoE+-Qws0-{S~ni2_B?XXBJwqm5I{@W!f;+L`=i;zdOFE7GI3q(@a%%ggCfQn@u^+iip^<%vKAXE_sg2^OTwK8cYgpA)QlwvHdYYcoX z2bgK!RAU5Mt$@`d>q?fj?;F7Qi1_QVD(7qn&>7r*=L5+dHSVGAOCb#lr3w}pAa_-p zlo_~48)j3Oa(4=Ih)@|!9sq;O08x*=RR=>ZP7Ur#7=~;jQXTRs>{ZCq#E)j6REz_9 zh=eA{H+q2|PIY6bIx&VnoGuofiBqpCec?p6Uhv)k^ddd4^G&t%9 zY-k2o(470o9Kb|1c*OH30!6??u5JhP6bM<+K|&{NI5fW_YOc}VaBX4v;R9>6F}@>e b9;QD-q}la_C0C<6;P;SdHF@d*Woi9CJYZeG literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_transfer_palm_network/00006.png b/tests/snapshots/nanos_transfer_palm_network/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..402c20d84b73864383ebc9f5a2cc87b175f5db3a GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfjh}ba4!+V0?Qpu$}+Z;wl?0GvNM-UO}LpM zky5uhal%ZHQK4dSYZ+%cwzcJ7bU5q>gz}StoRy3-c_mXaD%7>#FL-$Sd3dKc15MFpd>Y7XB)^&w=$kU2LncsOmxlb>jgobGR4RtRSIvkw{qJ) z-k{BNYMKd;QTzYAL~p5OZSof#4llR(=qVMJ($*$Ab77)uTE-4V=fhVFPUOsN*u=_P zev*f``Ha_Lh0T`?P5_w@bmoG=iJGR?wG$oFmOfn9wp(f$o7BG*4~6I6nAJ9Y(#_4S zx*0Q4Cd`zYu+#gQ-puxsHA;+6txb81;;$K;SOc`)`Eb{n3mcS-P1XR-G*4O9=9zYy zWlA>hi9IogRX%T%Vw>52vEj_tR;Wnvk2E8bnCKl>8qOS+%J|{VJNeAR_7fKhJRN>6 zWt_R(#K%Y*B*bf?@cHzid?OPZ*R-q|Qfe~~OJ_JdGiQ7n#BAiBxx@R}2R5LKwiNib zwJkq!XF{bkuSv~rHmSN0W~1w3?WueMPz z$jMOtJF#s}Y?8nbo644w2lP(7Qu7&Lh$$GG`0$>%lOd6E?`G%PjEacEho#sgfuXFQ zeWOb_8W?6gy!z_Ez}=wqxl_z;<{4*T7^Tcp+APW)4b*$#gTTy%593WQI2=|m1}X&# zr~*UES~!4j_tt_NTU!sW)0HX9eYhc;yFK@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00000.png b/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e47d6482287f9d4f565681dc1111c4193eb68ef0 GIT binary patch literal 639 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfh4!x;TbZFupw)SoGM9!TBKj zw1WT4kC_8~*Q$Ga_wCfaDd=0)9bcu|d3ocC@R*mY!Y5hCwl@@A6^s4qCA2&_;)m~g z3)!xQPp729Quc)~8wDR$C|=AcDWx`ZCF9KSvPAxrf8x9+E)*FnT^)_I9UE&4KyOd;h8E> z=H8)~5-AxK{tlM1?#xE{Vt&V!oDa`#y}S`9m-etkhWEsuyu@xcsf-1UZ7UPAerWT~ zHnmxjcwOor(B}8LIjYS(M)H$>78&tRtgPhqS1&%_nhx|zM#RL(%pV~juP7Ls+?lX2 z(G}!Fpzutoyc26o)||LtaFU1jgb(it9^T13yw0GYNt_g!IU~icIB|8GXPPi5kbvG? z`Ow+uzh_#8L)xU7QWJK1gN&IZ31em4@JX8lRK_ypzvdF*tE2V@8S^DE7{CXjB8E0vG`N*$!z-8E4K1hExXAsW{U$ sCv1EVcb)N9Sulq$8z{!T-1#^Ay@+4kX*zGpfC-Di)78&qol`;+0LSVDApigX literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00001.png b/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..b4443b629cfd8207ffb304b6c5c928971f340552 GIT binary patch literal 631 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiG9x;TbZFupw)Sadr~#O0u| z#<_puHuA#PR{sb~2%PA8Sy6I9^q;lilPqMrtBy`xSEbr{xsXF6JojSgdX++}w%+;| zqRX8H1L7hN_nncy+HmHQL5f|5LtC4ovDAdhRPlR_XM#`ku%);$8+D(_aCjCQQxVSV z43yq%!ZY)tK}z47L)IA*M$T#OX(kFlEs{p^CJLVojDW-{y*N~JK0k9U1>ODz3T&?RNEQ-i3<}?)OfZ5Ejm15A>&MbpxC8`Gupxd zb=MlsD4HsK7T`UxXH)NdQ-xwHHpZvzY$<-nH-2y1^M_+w+vSZpeBCaClxc0UGxM`0j7)%%yxly!5JeA}C4tVe)w6M8Hu44rSB68{ zL`jftkb5UYN&&-Y@x$q$(8>e)dO73FrHK=Pe!19iW;rPQoYOKL(oX#8*` z+K2Y4n@x0pS~R65?7ZIUKJlm7%%u0QU;91mfp(? vIW?AFzXtTQ2GgmR8_fLLw-s7#+0Srf*{{+a_Dbcz1jXR#>gTe~DWM4fL(K~v literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00002.png b/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..0bef4f3a7b4f6195c1d9fc70dcd11adb9d29bb52 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!3HF6DHW(PFfiWoba4!+V0?S@KDXZ;sPq04($@Y}pt$UkYuJ7O_vMLEmi+4c;Fw95@=>aR7Nxv47?$ZTZtr_3n+(gx*XR_$~kWo+{1#Gb1SXD%3= zxUfOl`S7wtWoKq1=fesh37M0pZl2)bJ;7rH6tf4a>N|5`!^DM*Gq+1kkOZQXHnx<$ zq^B8D6K1Bx%Ze~iP)OohG zIi_9y5O&xt%^k>mro%ENocDx`AG1-use^*|uq^-bNuC4jCC(rnYh>Cs(MmB?|tDnm{ Hr-UW|v$x^l literal 0 HcmV?d00001 diff --git a/tests/snapshots/approve/nanox/review.png b/tests/snapshots/nanox_approve_dai_tokens/00000.png similarity index 100% rename from tests/snapshots/approve/nanox/review.png rename to tests/snapshots/nanox_approve_dai_tokens/00000.png diff --git a/tests/snapshots/approve/nanox/type.png b/tests/snapshots/nanox_approve_dai_tokens/00001.png similarity index 100% rename from tests/snapshots/approve/nanox/type.png rename to tests/snapshots/nanox_approve_dai_tokens/00001.png diff --git a/tests/snapshots/approve/nanox/amount.png b/tests/snapshots/nanox_approve_dai_tokens/00002.png similarity index 100% rename from tests/snapshots/approve/nanox/amount.png rename to tests/snapshots/nanox_approve_dai_tokens/00002.png diff --git a/tests/snapshots/approve/nanox/address.png b/tests/snapshots/nanox_approve_dai_tokens/00003.png similarity index 100% rename from tests/snapshots/approve/nanox/address.png rename to tests/snapshots/nanox_approve_dai_tokens/00003.png diff --git a/tests/snapshots/approve/nanox/fees.png b/tests/snapshots/nanox_approve_dai_tokens/00004.png similarity index 100% rename from tests/snapshots/approve/nanox/fees.png rename to tests/snapshots/nanox_approve_dai_tokens/00004.png diff --git a/tests/snapshots/approve/nanox/accept.png b/tests/snapshots/nanox_approve_dai_tokens/00005.png similarity index 100% rename from tests/snapshots/approve/nanox/accept.png rename to tests/snapshots/nanox_approve_dai_tokens/00005.png diff --git a/tests/snapshots/nanox_approve_dai_tokens/00006.png b/tests/snapshots/nanox_approve_dai_tokens/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7a77cb1234495ce3418c44945e3e8e8d33244c1a GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_QLba4!+V0?R!u}j*Lf#IOs z!}(wS&%cuYu~MNa@uRBZo2NP6q3rf| z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB%z}bL?_`?Vlf7@NKi?d+_9;jX#tp zDW-ppeOn;kgB0oPjlJ7$xJBnI*4=hd>~=ojyj0W z5B1psRLB$j(OC4d&bEs{%^h9u17;=}&geRo(ygeqZ*@`^KildV?-=~HZG;+Sb}LCb z_hW0<+r1$*PZ|8;LRQ=fJesaGy{r4w(npIvX=~|el?N~Ul=X3u)6;h$|N6U5sc4C= z7qbsp;S(76F{E(iiWL>1fraH-qW<0TAzJqwkGeh$4_Q$YRv5T*H`mnVN4ckV?GD}< z@@HLFc_7G~POqci;YCcbY_W49&}rX(+f@jQicj@E8Xlq*qBSo>55#HpIyxEXYHh9ZjXPEX zeO?(;<3FfMMVdG~a$9P)i8VU)@0WG0xeuuE8-4pZx dMUArm47O%}CQM&p5DrWy44$rjF6*2UngC9s5w`#U literal 0 HcmV?d00001 diff --git a/tests/snapshots/deposit/nanox/amount.png b/tests/snapshots/nanox_deposit_eth_compound_blind/00002.png similarity index 100% rename from tests/snapshots/deposit/nanox/amount.png rename to tests/snapshots/nanox_deposit_eth_compound_blind/00002.png diff --git a/tests/snapshots/deposit/nanox/address.png b/tests/snapshots/nanox_deposit_eth_compound_blind/00003.png similarity index 100% rename from tests/snapshots/deposit/nanox/address.png rename to tests/snapshots/nanox_deposit_eth_compound_blind/00003.png diff --git a/tests/snapshots/deposit/nanox/fees.png b/tests/snapshots/nanox_deposit_eth_compound_blind/00004.png similarity index 100% rename from tests/snapshots/deposit/nanox/fees.png rename to tests/snapshots/nanox_deposit_eth_compound_blind/00004.png diff --git a/tests/snapshots/chainid/nanox/accept.png b/tests/snapshots/nanox_deposit_eth_compound_blind/00005.png similarity index 100% rename from tests/snapshots/chainid/nanox/accept.png rename to tests/snapshots/nanox_deposit_eth_compound_blind/00005.png diff --git a/tests/snapshots/nanox_deposit_eth_compound_blind/00006.png b/tests/snapshots/nanox_deposit_eth_compound_blind/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7a77cb1234495ce3418c44945e3e8e8d33244c1a GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_QLba4!+V0?R!u}j*Lf#IOs z!}(wS&%cuYu~MNa@uRBZo2NP6q3rf| z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB% z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB%Eakt!T9!IV3)L~2*bfQ zPUa_n%WIxjT78iBmSggnP4d>U`i~xLe}1}9rf09rdGWZu>0oxP%z??%pMO62@l%au zU-QQHqqCoLCu_5RNXf}I+_p_3I=W}A?y+lP$=Tf-w;sK5D=8-zhw#VdkdPQHt$*I4 zqPr^${yCr=^dU1by^-8d4avGbAQNPgF}(eCqs^LSa#L(W${lmp&2} zo%%jxPKclAd##YVRqXa1Uam)7mp%&mC_8n%mY-I9Xid<(h|Hz>n&pqN3_k{eh;bPo2Nw(PZX|Ps^NA@A$W# z+I@63*VICPEz$R4`$JdsR0przp;H&UQsR5q!lKAMfj~yc!cTc0TfL6%n9enIJ>P?q zyrFYK_5~LP{RH{ruFZ~xTvNN=hpd>R6=D~-bMsN&l|B1EC;SOK>iRTKE@#anf1uyW zza#`}P49{YhM8Q>5+|Ui19yUS=xLRgF!&$aMnphj58t=qn_u6(yH}U>7%F;fAwCbM*Jf=s!PQD3enxbKvCZ%6U+p zv5wq1@oj;84^pJFH}-D3;TD~#56+dcBT*i`5FbCwt(e*)@GTkE4@M)jJ<` zO`XMT@smMRe5!qDVc^ctm=LocN5xlE1g+c=x@Yx{6(KPpdZJoD2YVm&57C+z@~^C$ zKlo!vVPN3SkQH}ALPGMiwEiz~dO9D-nHLgbckq$(iaT0*qT9Q=_B*;BRgb6PX_ za#vT^ssB+xuP*x(@^O1~O+(lG6@T`xSg|KK@TUlS!6!zb(Rrf&THCv3pIZ88SrE`E zK%0RfF}H0$_8*hMK6~NwQPdA(bcq2UP5S5IlKMxb6!o-^RKEYO ztaIS+ThF;Y<)astI>&}S-u~3;sxF*);%R!=s*riozajhI{YeuK3a?FW$eYN!W_E)sX(GF!PPtR3JN?s^*kiO&Owpc@n0&!oO1kDO;OC-buJ*8Oz$nr^XTwp0 z(s4CTAjlhoPHP8>*!qHcoPvr;0n#FEyPBNx&2gWTc2+lDU=7M9gg4q#&}zPWZWTwn zLd^Ub4L2p2(Y6DM0iR-P>|Te7M8Y#?B?qa2;e1+ z9qg8KwKeFFcm$wfcgVpF*2ndBD)VIf01R!J^NYyI(3sBZ%o=Zg<|oYq&NEGW;? zL1%?acnO%-b3C}A`#4{~f*CO5zMv;PCmH}kaF2$A8PsEd8K}675gx?rVLV7-I>7H? zMWgGcQR&oh;HU@df0L{5*6XrEJ0!$e2+P&}qiZ-`*5P_!*LzZ8cs=ki`HS*#9nwxl z|MFuqT5WMxl7Q!2Ihab)1*;aKDq5Cy30cqyCjDJxh7;Hsz8~PHa%>nF5U?2(7nu%6 z+K46bqglgM=+YgrPF9q4XlqCYIyk97x6`PMh|@;p)z$bSC|8F-u3Rq6euh@X%@X5I z&=O*nBNbQ$YC9}vG5{%ZU9X~taq4iSTMs-TTeDQ4ngHyIB?BV6?3UXSLaHOvN`b0iY`m(72i{aU z)VrjLHH>*ZHmevCc?p4hPh0!|cGRfk?cO}|x+MoLiMNEPHQ)iXOI_C3`2YIDb<1uz d`0a^(S=^af=F@HZV;8(=iZ)f1^cwg6`4t4;)vN#j literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_disable_blind_signing/00004.png b/tests/snapshots/nanox_disable_blind_signing/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..ed04d7055b319986173134768027aad73f3a9950 GIT binary patch literal 1067 zcmY*ZZ%i9y7%vmYQaZ^@j*T(sx1ld%W+g!-G;;+kt!=rM_ZYKCNt3D*L0U;D0XJgp z$c~X3%`vykn$EU&SGHL?CMA}UvRsUZiN+<08mFGQ4^3uF`(docfX{XDgO}WU&%O7& zPk#S$=SiD!ulk@`rBdxRb#*x4ISuyoX$8Lm=Wq5$D6So{6~08Z=_(N&X|{u!nn8IPsYcF@QDb6MMvW9p>yI zm@UqNdV-=6bD0-Cj-s`(>Z%S;ofKZ9@S$JCEO(#E#GvzOA|Sr?^TR5VfA|y=k@V=e zRkpX(N2M@E=$>PdEzHv{XIo% z<>>EYeT{6p^ZB};#5xSulu;N$+e4`Sv}}XdaHnvS-|U%)&S~)?tE2Ao79co;4l}DX zj0bAy0kG3EyxUO&Wt<)&0_LEIk3r)k+DdvGpg*dkI1TC%!XgIF1`n5xJ0dAoSLy-c zQK%^kfhGyGj5#Pk!${$k+VQJ}8sb+fUq`s?5gqjpRa+GWVS?f~uOYM%9rU7h!Ikp; z{Uk%Ljr?H)Tp=zUb30Z#l?6mwiAl|{%S)Hd0-V*LNyVX6%=J5`E7^9A{1LdHGYj{` z9Enk!xf_9@jqIIA9}Ge97E`g{w+c8<5LyMvH)eUBIc|_yeriT^-OQK6bSElluu5-% z_U%ED^jc%?ZchRNP?7|NlKFBRS1U#nN(0UxWR{h*C`5g;u;_ph3Z;C5gmKwRDm_i$ z_9~@8p(XDqBG3=`3@tWq`gZ~RaSmtL5-80~73y-yIgLb+7%l0- z2;@fWf=tOVNpS1ISnt}Erga-7XmuqQY-|y}n($TnG`;=Cr(QLQ9*g(P92lvs(i{bgz*JsXXG>;IrhI;HPx_k57(Cwye znwyopy=LotP5GU&i;w-VGhv8sJa0IDeQn{7TZ#SS?=rKgA8+M_~a>wU!P3!k< zvDVQ;-yB*EDQ@cRjL2lQ zXos~$BC7@1hp9{QO2I_y8-S##5bY3`eo9wSS=SiC_wbcK{gjyz$ZUknhDiuja-!J^ zp=O2}Lszt1RLgk~q}dp?iRyOFtE+Re@+9)sOQ#~qM#+Em^b-UZ*dU!fZy|KaW>q>d z-V@J%fl*z5la-ZMmfMrOSy8p{AgDl7_dkSmpoC%Rhi=S3*9v@si79IR1!4x50*T+S zunMgm(sGL=pFe=GV;Eqb$O`1)zf^MiPqAQ%1hib{PdHuDrCfmNqMJ8HI|Mx5tD@(2 zbAikv#V2OE2job2b03JScg-?NANrNgXWBQ5P;ZE)#0u3kU==eHqp2Q7=WSzUTs%t)Q%<1aun$WIXS=%8-AVW){DNtO>kLxs_Wx8nIJb68)hAHPZ3y2|vjtX_+_IRw z&?H?p3i$LO`1ipP0&Pv0m27mp>~4C+0%FEa7EORJD7CG|!@m)*zo+yhHTrXIPv{v@Yr_#w2 zGvhN;@r6iFV$ZEzqh+dMQEILzo}XL$sm*Y@?YHg29^B=wUitgo*Mj>l-+d9`JG=*f zEo0qUYq*imBTCux@2_5^^UyvatX`=Xygpw!&O`88H~H5#SW63giCI%?oq&z0!~xYu zpNg+6ICh{YzGK`dW}W!l4|9Dc1(LE+Qh^XWIiD~2(o$z>@Y}_T;>Asnh`n-RFu@&I z?{POH6C-MHXdph%yg@e6p*$3P+`y%Gn%8p)Nb4`hBLLaRDEphe3^-g<*D%Q|Wqv&1TpQ%SaxO@KIh*K+3S%N^|9OXqpi*=cBlE zANki-3TuaCx?*XKK<}2QwM&8roR%&)Ip$I>%foRS?%MoOUk-s zY-08DF%2Vxt)$dqUH!PVlFnMMR$)2DTri<|Z6+ zb;;OSBWHWyB+&3+EhDZ~@OY%{W1ielB7_a+H37?FXXz}Mb*_OCCoYk^YHv`+{xTPz7$fCS|N<(Xj=g zmVl2Mql_Cegow{4?1vF?vs)(&nb&imC7ft^D3j|bkM)4zg)|<#?6XjgFXdCV$`NRd z+XGJ@Sv~$9bmLUo%_6jtg91S!)kVbXCbHy?AhI!3%8W2>Qr(1$c5 zdTkFb=H~mMvMd6TT5G70zhMIL*(M|UKs2EoAY%b&f*SxM1qZlH2PhDz;*&;Yl}E>j z?U3Xk@h6=cG^V$>`I0GF(S45zjzrs0C4!lka-t^87zF`w@|F8F-{FZB9JV&+`Dd4Xl(bgJj JM%9Nu`45St^R)l~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_disable_blind_signing/00007.png b/tests/snapshots/nanox_disable_blind_signing/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..bc8064a47bfdbfe81d8af86d445e9f677ac2d4df GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_8Dba4!+V0?S!H(?JLAq-u90KkQL%Gf_h+!UY}@SD zt)WjD#8+S2u!?u}E&N1)kL%K#0bZ#G13aE8bDnK8(vtVgC~xQ%()zE&soNI%mO^ma1)_pM0y07}Me&rt3hn;QhUWb0|mKO=!>3wMKsaT z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB% z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB% z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB% z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB% z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB%FywCG~?PjAc zhulIE1d*e!C}-e%6`n)uvf%ytO-l)(=(qWT zwYjZdL%)ot+V85qCsyW*bHh)zE*DLxW@kQZeK8g8%pChVez8fqT_eY8OpW)4vzzUSb1Ps?|mxjW5v%qb!cqI|Ds+0() z{KzEm4|+~Yp+QD@?`J;~nhcZNr#X7S(R7$XcKHU3!fzQq`H@&?W}@Dt8fapr|F~^E zia-^cQZP_Xf7#HRXu>c2GVL;#^38!%eqyy|S;Cc~WnVZWtr+{_7|K|?$n{E>u#+JIE>2?dB zJOUi-(D@`#lZbR7JcRJGR~;<|Xq%EjnIQYYZypDshfqlw1bgvyl3N7lHWpnOW_d@z zoFX}Y92_hFbcCl90f*27Q-D2Bm)tPC&^$_Vea1w924<<7vOXUp34z>|X(3vw(&I~l zc>kt6Vjq^|@Flmw(v+@VwpjP2w9_4JX~@W(%&|valG9NrSPa?IN)SCO`}|oAI6@(X wDz*}&o%`f6_65M^77>0!c(W-`N60a zqGcCUxYQ_gP6$vkKD2OY(W)ImGqu)*#9e&AyJE!(AJNID+(Ybw0}EHp2nku%wK6Fv z5F{NEceU3%;G^W!t}f4~>sJ7c77Z6&-gQ32M{E6yW8J|kEmnri(Ndeb^3nbUMWKa3 zmCJ$(R|Qm>Hp?%1bbrMRph@e4e)gQY9~fAfYF=jnG$vhCer3Q9!1jY5I`(h3GMfuRzjHZ}MtP}{;!vTV06<<)Ekx*$B{ zkBO*OIMDayJ3pQc`KJjqIXrOTC$P41iJbkut*16~O$|4>QP<5ib^fzs>_98{Mb)R? z_gtC;w0?z;7Emvky%OlWaG=copu(V^>qA%AST|UUi)!8ey)s~@R7}W; zZawww9xxV~<3qHzeGgk$Bo(tFBB@mL^r}i)x+cdvI>snuFW6P#xJb{8jUD Vl`wj@6POwqJYD@<);T3K0RX#&PzV43 literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_etc/nanox/accept.png b/tests/snapshots/nanox_transfer_ethereum_5234_network/00005.png similarity index 100% rename from tests/snapshots/send_etc/nanox/accept.png rename to tests/snapshots/nanox_transfer_ethereum_5234_network/00005.png diff --git a/tests/snapshots/nanox_transfer_ethereum_5234_network/00006.png b/tests/snapshots/nanox_transfer_ethereum_5234_network/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7a77cb1234495ce3418c44945e3e8e8d33244c1a GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_QLba4!+V0?R!u}j*Lf#IOs z!}(wS&%cuYu~MNa@uRBZo2NP6q3rf| z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB%7Zd@yx<8LGD|NL^HOwMbIhRMr6+gQ$n z$QbOfoPT3l5rg{eO>DO>VIn!5Rge5qUD*pZP3XEG70O~b+m^~6IH{zir*(hjjumT?HZ15`uN79ppw7MWhwRj;G6zmJ zX}t>p31G2LNNZm)gL*#D!l%o%LhK@2Pu*plvu7pO)Rj)DzqfKt&HQjsOG`^nG(I#& z>m8U?E?O@7-eGByRLu%5(W#zGlU4=%T;=4N8nkjp$cm5{t&n?;t*5>`I2-DtRW52D z`Y}^06p>c3F!~oyse=C}`u~=Lfl0?EtEOln)H`V4z<_C!bpSXi?Gf qAj6e=CNo>yoMw7sni(PVjlVP7(D7f?IZe literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_etc/nanox/amount.png b/tests/snapshots/nanox_transfer_ethereum_clone/00001.png similarity index 100% rename from tests/snapshots/send_etc/nanox/amount.png rename to tests/snapshots/nanox_transfer_ethereum_clone/00001.png diff --git a/tests/snapshots/nanox_transfer_ethereum_clone/00002.png b/tests/snapshots/nanox_transfer_ethereum_clone/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4228ae193adbfaa0a04cbc0fd31351cfaa89582b GIT binary patch literal 1298 zcmY*Ze@t6d6s}XiJYkra=ZX#6AI>egH6v}4i8`XREKsc7YkObI5>`!<2LGv0vMF8X z0B2cjMWgj*U>4wES>G#73C)I(u`RefOy2&$NMd9VaV#})nIkl2quMdgZBb+M+TLI1 zp6`6$cizXGwXuSEj!~&p73QV}JN);+_w^@B;rE9hySr7YCzi|&^|<4>J@2q{=p8P3b-rM=>x0T;ip1ToRoNRq}&t^xiGB zVo12&E4E1Gtd&!UqEeP_jHctGS(KVp!z2NLRmddcjV5^{ zols-<+?+aJjCky}L4Ule@jclvH0e@7EHUCw?KuFn_%B_D$0_Cd6d zCergsd{5#6F{78)NftJ$aFeiCN+f!t1qE3&9$1?Ib@m+!^i~SjhS|P6>>uTEK&z;MQ57jk?bHK61k%i7J-cMusPGtNou?gM9&xy5RY|I63So*X$~pRvnUAqj2bh4 zoJQEGi7;d_XqQ@ic~0m&*^b!7`AWpbA2%h~c$*=AHlQqT2C=d@=+*B8u zuAYjL4>KeP*FiP|-7kvP2dWg=x&WxETtiq$y9CODSPs~!KA4VxuyyC8i_Y?vkiu;* zN0mAhED%Qn=%6iiNbrbiyj21wz#9gTc>%QeStk2|`9p7v6-^ffR?@Hz{DG0VK?Gu5 zqu$v36mYyhuEs%4YxE7BsQv!e=hm}R#kM&XFtHGRSAu87p_69Q+Ok;ZXNrLu+I1pR0cJ4C zv1~P5|LRP3t>AhvnFwg1o0rJrg}&61M#>We^nkBk{t6oMSip~Hlj)>Wq*(@c!`)AH m+&AN~#eOH!)< literal 0 HcmV?d00001 diff --git a/tests/snapshots/send_etc/nanox/fees.png b/tests/snapshots/nanox_transfer_ethereum_clone/00003.png similarity index 100% rename from tests/snapshots/send_etc/nanox/fees.png rename to tests/snapshots/nanox_transfer_ethereum_clone/00003.png diff --git a/tests/snapshots/nanox_transfer_ethereum_clone/00004.png b/tests/snapshots/nanox_transfer_ethereum_clone/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..a2cb8f9dc97401fd76908866c585e2855970e054 GIT binary patch literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|`Dhba4!+V0?R!F;Cf*f#Kl2 zz`9HS>x1^Ee)QO$Vfbu^0!v}qD!w`k`M$>q(WeXTJ`~u@;XhuuVeMlEKe= zblsz=UEx}KqN4T7AKeXEai{i!%Tgzxia)bM_ATa`n%*oPvTsvYch@PPsOZ%25IgUu zb64ysVo=Xt1~b`u>dHrcsjGGb&(xZ?G6v}P_fHu7w#{EPBV^y~gWI+M5wpe3X{I-( znE_FRgX_`ywTm8U1B3SWgYMNkf_H|j2#E>N13ADC7-B&0K=|*IJ{(=SVug=rxv188 zEw!of3l|juJplBIck8LmK(EQxd^j3f6LvH`)JIEndRKht$2_|qhkz$*-qD4tTGeO+0_=QHHdzz8l2yrP6@|$#y XzklTVrji}Nw8!A->gTe~DWM4f-qkj) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_transfer_ethereum_clone/00005.png b/tests/snapshots/nanox_transfer_ethereum_clone/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7a77cb1234495ce3418c44945e3e8e8d33244c1a GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_QLba4!+V0?R!u}j*Lf#IOs z!}(wS&%cuYu~MNa@uRBZo2NP6q3rf| z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB%7Zd@yx<8LGD|NL^HOwMbIhRMr6+gQ$n z$QbOfoPT3l5rg{eO>DO>VIn!5Rge5qUD*pZP3XEG70O~b+m^~6IH{zir*(hjjumT?HZ15`uN79ppw7MWhwRj;G6zmJ zX}t>p31G2LNNZm)gL*#D!l%o%LhK@2Pu*plvu7pO)Rj)DzqfKt&HQjsOG`^nG(I#& z>m8U?E?O@7-eGByRLu%5(W#zGlU4=%T;=4N8nkjp$cm5{t&n?;t*5>`I2-DtRW52D z`Y}^06p>c3F!~oyse=C}`u~=Lfl0?EtEOln)H`V4z<_C!bpSXi?Gf qAj6e=CNo>yoMw7sni(PVjlVP7(D7f?IZe literal 0 HcmV?d00001 diff --git a/tests/snapshots/chainid/nanox/amount_palm.png b/tests/snapshots/nanox_transfer_palm_network/00001.png similarity index 100% rename from tests/snapshots/chainid/nanox/amount_palm.png rename to tests/snapshots/nanox_transfer_palm_network/00001.png diff --git a/tests/snapshots/nanox_transfer_palm_network/00002.png b/tests/snapshots/nanox_transfer_palm_network/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..4228ae193adbfaa0a04cbc0fd31351cfaa89582b GIT binary patch literal 1298 zcmY*Ze@t6d6s}XiJYkra=ZX#6AI>egH6v}4i8`XREKsc7YkObI5>`!<2LGv0vMF8X z0B2cjMWgj*U>4wES>G#73C)I(u`RefOy2&$NMd9VaV#})nIkl2quMdgZBb+M+TLI1 zp6`6$cizXGwXuSEj!~&p73QV}JN);+_w^@B;rE9hySr7YCzi|&^|<4>J@2q{=p8P3b-rM=>x0T;ip1ToRoNRq}&t^xiGB zVo12&E4E1Gtd&!UqEeP_jHctGS(KVp!z2NLRmddcjV5^{ zols-<+?+aJjCky}L4Ule@jclvH0e@7EHUCw?KuFn_%B_D$0_Cd6d zCergsd{5#6F{78)NftJ$aFeiCN+f!t1qE3&9$1?Ib@m+!^i~SjhS|P6>>uTEK&z;MQ57jk?bHK61k%i7J-cMusPGtNou?gM9&xy5RY|I63So*X$~pRvnUAqj2bh4 zoJQEGi7;d_XqQ@ic~0m&*^b!7`AWpbA2%h~c$*=AHlQqT2C=d@=+*B8u zuAYjL4>KeP*FiP|-7kvP2dWg=x&WxETtiq$y9CODSPs~!KA4VxuyyC8i_Y?vkiu;* zN0mAhED%Qn=%6iiNbrbiyj21wz#9gTc>%QeStk2|`9p7v6-^ffR?@Hz{DG0VK?Gu5 zqu$v36mYyhuEs%4YxE7BsQv!e=hm}R#kM&XFtHGRSAu87p_69Q+Ok;ZXNrLu+I1pR0cJ4C zv1~P5|LRP3t>AhvnFwg1o0rJrg}&61M#>We^nkBk{t6oMSip~Hlj)>Wq*(@c!`)AH m+&AN~#eOH!)< literal 0 HcmV?d00001 diff --git a/tests/snapshots/chainid/nanox/palm.png b/tests/snapshots/nanox_transfer_palm_network/00003.png similarity index 100% rename from tests/snapshots/chainid/nanox/palm.png rename to tests/snapshots/nanox_transfer_palm_network/00003.png diff --git a/tests/snapshots/chainid/nanox/fees_palm.png b/tests/snapshots/nanox_transfer_palm_network/00004.png similarity index 100% rename from tests/snapshots/chainid/nanox/fees_palm.png rename to tests/snapshots/nanox_transfer_palm_network/00004.png diff --git a/tests/snapshots/nanox_transfer_palm_network/00005.png b/tests/snapshots/nanox_transfer_palm_network/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..a2cb8f9dc97401fd76908866c585e2855970e054 GIT binary patch literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|`Dhba4!+V0?R!F;Cf*f#Kl2 zz`9HS>x1^Ee)QO$Vfbu^0!v}qD!w`k`M$>q(WeXTJ`~u@;XhuuVeMlEKe= zblsz=UEx}KqN4T7AKeXEai{i!%Tgzxia)bM_ATa`n%*oPvTsvYch@PPsOZ%25IgUu zb64ysVo=Xt1~b`u>dHrcsjGGb&(xZ?G6v}P_fHu7w#{EPBV^y~gWI+M5wpe3X{I-( znE_FRgX_`ywTm8U1B3SWgYMNkf_H|j2#E>N13ADC7-B&0K=|*IJ{(=SVug=rxv188 zEw!of3l|juJplBIck8LmK(EQxd^j3f6LvH`)JIEndRKht$2_|qhkz$*-qD4tTGeO+0_=QHHdzz8l2yrP6@|$#y XzklTVrji}Nw8!A->gTe~DWM4f-qkj) literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_transfer_palm_network/00006.png b/tests/snapshots/nanox_transfer_palm_network/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..7a77cb1234495ce3418c44945e3e8e8d33244c1a GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_QLba4!+V0?R!u}j*Lf#IOs z!}(wS&%cuYu~MNa@uRBZo2NP6q3rf| z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB%RhIwN0-k_vueF+p48OEXQk*4S>p%ao#64U^PtVOjQK$*3;K zmYrzmYHn-ZO;)}HBSkS&5T~D{=A1EMkA`us)bF}8SKh0 zM8WN&!8@r7>npP7>n`?JCwrb$z1=<({CMzF)rS|AsmZmGu^;En4W}2+vSh1$CzToI zrM`~VEM-P@ZTb7jfq~J=%BEKn@gBE4(O`($SeB6`8l!ghwJgz*$%KS9ykBwPx`-8w z7NrLp({J+rVslp0ay~?ty_E8=q8g^>_~SNKU1Syxj2+oPwTP}vrsvq>>#RD`D&k&t z)Pz4e`|ip8mhw0Ml+^7_&Uw%Umq}XCv1@{oKF2|WBQN6* z?#MXt*RyRjI5aN!J>h=fgzQW-S(fOEQSiK;S3=I5eCyCI35JqxN4M}psF4f(Sl#v!AE4>>{0G(>j;OG$RGG005gJg4Nm79D;PSE?JKt)jsy zdS$x39~#p=hrQvF2$wx6R+jx8XPB*y*6jc0d_JyUPn7T5xXcDW7@;oG75WN}T>S&J Clc)0l literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00001.png b/tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..7a77cb1234495ce3418c44945e3e8e8d33244c1a GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}EWU|_QLba4!+V0?R!u}j*Lf#IOs z!}(wS&%cuYu~MNa@uRBZo2NP6q3rf| z9slvd4Qmq%3hNW1Pch!PInDIOG&7P=MWE>YrAe!P@QKb(_|T*kqP1`Ksrf5*1pQ<& zzvppu>Zy>zrJsCSPlXt+42fA8GDpi#OH?cP=n|vQn3a1bN$0zzt_qkLvW#o${FMPa zgJy!I&xfq=5!IS}DrDg&t-L)mxTa3_YCUy7XyYVl{S}Y?FDY8}qr^OJ!l{srf6Mc1 z0vCST9=ZZ(^oluJYExHtc|Hvf0WyM*8jGq=)t(CEUkzDNQ_4`Trxg+x*m}xXRO|Ns z)d4%DVnSBr%=cXSDC>iB>#1)yL$sCw0|ms~sTH#9V5`^BZ!@(**0IH}2+5hh)amK! zgTh+t*F5?k^sz5wp5z|Isc)e33ice0m%!6##_ z;MP+slYssL`f%l=B|!^|Rs~d=o7*|Go_fFP$EqY(^Luknt#o=?zQSg4(W;1}51dzo z{PEQi71etG;@IrfGeYWImx8qK3tIUjguNjBcQQ~WYlH6FW8d6?VfFqE!@Hc*QaRqz dB% { -const ORIGINAL_SNAPSHOT_PATH_PREFIX = "snapshots/approve/"; + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'F869468506A8B15E0082EBEB946B175474E89094C44DA98B954EEDEAC495271D0F80B844095EA7B30000000000000000000000007D2768DE32B0B80B7A3454C06BDAC94A69DDC7A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF018080', + ); -const ORIGINAL_SNAPSHOT_PATH_NANOS = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanos/"; -const ORIGINAL_SNAPSHOT_PATH_NANOX = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanox/"; + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_approve_dai_tokens', [7, 0]); -test("Approve DAI tokens nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); + await expect(tx).resolves.toEqual({ + "r": "92243511396b65a4faa735a5472ea99b3ce0f7f2338eab426206730bc0ddc57f", + "s": "161bc0f861064d840de4f4304cfd19a571017e62df7d8f70cf605c0f025593b6", + "v": "25", + }); +})); - let tmpPath = getTmpPath(expect.getState().currentTestName); +test('[Nano X] Approve DAI tokens', zemu("nanox", async (sim, eth) => { - try { - await sim.start(sim_options_nanos); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'F869468506A8B15E0082EBEB946B175474E89094C44DA98B954EEDEAC495271D0F80B844095EA7B30000000000000000000000007D2768DE32B0B80B7A3454C06BDAC94A69DDC7A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF018080', + ); - let transport = await sim.getTransport(); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_approve_dai_tokens', [5, 0]); - // Token provisioning - let buffer = Buffer.from("034441496B175474E89094C44DA98B954EEDEAC495271D0F00000012000000013045022100B3AA979633284EB0F55459099333AB92CF06FDD58DC90E9C070000C8E968864C02207B10EC7D6609F51DDA53D083A6E165A0ABF3A77E13250E6F260772809B49AFF5", "hex"); - let tx = transport.send(0xe0, 0x0a, 0x00, 0x00, buffer); - - // Send transaction - buffer = Buffer.from("058000002C8000003C800000010000000000000000F869468506A8B15E0082EBEB946B175474E89094C44DA98B954EEDEAC495271D0F80B844095EA7B30000000000000000000000007D2768DE32B0B80B7A3454C06BDAC94A69DDC7A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF018080", "hex"); - tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); - - // Type - filename = "type.png"; - await sim.clickRight(tmpPath + filename); - const type = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_type = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(type).toMatchSnapshot(expected_type); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); - - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); - - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([37, 146, 36, 53, 17, 57, 107, 101, 164, 250, 167, 53, 165, 71, 46, 169, 155, 60, 224, 247, 242, 51, 142, 171, 66, 98, 6, 115, 11, 192, 221, 197, 127, 22, 27, 192, 248, 97, 6, 77, 132, 13, 228, 244, 48, 76, 253, 25, 165, 113, 1, 126, 98, 223, 125, 143, 112, 207, 96, 92, 15, 2, 85, 147, 182, 144, 0]) - ); - } finally { - await sim.close(); - } -}); - -test("Approve DAI token nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - - // Token provisioning - let buffer = Buffer.from("034441496B175474E89094C44DA98B954EEDEAC495271D0F00000012000000013045022100B3AA979633284EB0F55459099333AB92CF06FDD58DC90E9C070000C8E968864C02207B10EC7D6609F51DDA53D083A6E165A0ABF3A77E13250E6F260772809B49AFF5", "hex"); - let tx = transport.send(0xe0, 0x0a, 0x00, 0x00, buffer); - - // Send transaction - buffer = Buffer.from("058000002C8000003C800000010000000000000000F869468506A8B15E0082EBEB946B175474E89094C44DA98B954EEDEAC495271D0F80B844095EA7B30000000000000000000000007D2768DE32B0B80B7A3454C06BDAC94A69DDC7A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF018080", "hex"); - tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Type - filename = "type.png"; - await sim.clickRight(tmpPath + filename); - const type = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_type = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(type).toMatchSnapshot(expected_type); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([37, 146, 36, 53, 17, 57, 107, 101, 164, 250, 167, 53, 165, 71, 46, 169, 155, 60, 224, 247, 242, 51, 142, 171, 66, 98, 6, 115, 11, 192, 221, 197, 127, 22, 27, 192, 248, 97, 6, 77, 132, 13, 228, 244, 48, 76, 253, 25, 165, 113, 1, 126, 98, 223, 125, 143, 112, 207, 96, 92, 15, 2, 85, 147, 182, 144, 0]) - ); - } finally { - await sim.close(); - } -}); \ No newline at end of file + await expect(tx).resolves.toEqual({ + "r": "92243511396b65a4faa735a5472ea99b3ce0f7f2338eab426206730bc0ddc57f", + "s": "161bc0f861064d840de4f4304cfd19a571017e62df7d8f70cf605c0f025593b6", + "v": "25", + }); +})); diff --git a/tests/src/blind_compound_deposit.test.js b/tests/src/blind_compound_deposit.test.js new file mode 100644 index 0000000..537ed8d --- /dev/null +++ b/tests/src/blind_compound_deposit.test.js @@ -0,0 +1,37 @@ +import "core-js/stable"; +import "regenerator-runtime/runtime"; +import { waitForAppScreen, zemu } from './test.fixture'; + +test('[Nano S] Deposit ETH on compound, blind sign', zemu("nanos", async (sim, eth) => { + + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f8924685028fa6ae008306599594cc9a0b7c43dc2a5f023bb9b738e45b0ef6b06e0488016345785d8a0000b864474cf53d0000000000000000000000007d2768de32b0b80b7a3454c06bdac94a69ddc7a900000000000000000000000070bc641723fad48be2df6cf63dc6270ee2f897430000000000000000000000000000000000000000000000000000000000000000018080', + ); + + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_deposit_eth_compound_blind', [7, 0]); + + await expect(tx).resolves.toEqual({ + "r": "b5ae3a011eb50e7d1fe9f5e6f6d91ca9f4dfca5f73805fc4866d49e72ead2f5c", + "s": "3c6e55db5925586bb58e434b58b2c04756f662131597f98c1aa2418b16992b81", + "v": "26", + }); +})); + +test('[Nano X] Deposit ETH on compound, blind sign', zemu("nanox", async (sim, eth) => { + + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f8924685028fa6ae008306599594cc9a0b7c43dc2a5f023bb9b738e45b0ef6b06e0488016345785d8a0000b864474cf53d0000000000000000000000007d2768de32b0b80b7a3454c06bdac94a69ddc7a900000000000000000000000070bc641723fad48be2df6cf63dc6270ee2f897430000000000000000000000000000000000000000000000000000000000000000018080', + ); + + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_deposit_eth_compound_blind', [5, 0]); + + await expect(tx).resolves.toEqual({ + "r": "b5ae3a011eb50e7d1fe9f5e6f6d91ca9f4dfca5f73805fc4866d49e72ead2f5c", + "s": "3c6e55db5925586bb58e434b58b2c04756f662131597f98c1aa2418b16992b81", + "v": "26", + }); +})); diff --git a/tests/src/chainid.test.js b/tests/src/chainid.test.js index e62da55..7461c83 100644 --- a/tests/src/chainid.test.js +++ b/tests/src/chainid.test.js @@ -1,370 +1,71 @@ import "core-js/stable"; import "regenerator-runtime/runtime"; -import Eth from "@ledgerhq/hw-app-eth"; -import { byContractAddress } from "@ledgerhq/hw-app-eth/erc20"; -import Zemu from "@zondax/zemu"; -import { TransportStatusError } from "@ledgerhq/errors"; -import { expect } from "../jest"; +import { waitForAppScreen, zemu } from './test.fixture'; -const {NANOS_ELF_PATH, NANOX_ELF_PATH, sim_options_nanos, sim_options_nanox, TIMEOUT, getTmpPath} = require("generic.js"); +test('[Nano S] Transfer on network 112233445566 on Ethereum', zemu("nanos", async (sim, eth) => { -const ORIGINAL_SNAPSHOT_PATH_PREFIX = "snapshots/chainid/"; + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf6181880851a21a278be8080', + ); -const ORIGINAL_SNAPSHOT_PATH_NANOS = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanos/"; -const ORIGINAL_SNAPSHOT_PATH_NANOX = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanox/"; + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_transfer_112233445566_network', [9, 0]); -test("Transfer on network 112233445566 on Ethereum nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); + await expect(tx).resolves.toEqual({ + "r": "509981d8dfb66757e25ff47c009b9b5bc5db0f169473e4735f5212b144f1c069", + "s": "5db989d81025de3c846e41a9ce01a3f9fd0982e2d827f1b88ffc95d73a48d04c", + "v": "344344f19f", + }); +})); - try { - await sim.start(sim_options_nanos); +test('[Nano S] Transfer on palm network on Ethereum', zemu("nanos", async (sim, eth) => { - let transport = await sim.getTransport(); - let eth = new Eth(transport); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf61818808502a15c308d8080', + ); - // Send transaction - let tx = eth.signTransaction( - "44'/60'/0'/0/0", - "f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf6181880851a21a278be8080" - ) - let filename; + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_transfer_palm_network', [9, 0]); - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); + await expect(tx).resolves.toEqual({ + "r": "946700c4972b3da24ddaa95e590ad25a8f905da62e2bd053285a4cc17f93f490", + "s": "3698e84564e58477a49f7a9cea572ef5d672a5538db08f3ee42df5eb75a1b907", + "v": "0542b8613d", + }); +})); - // Amount 1/3 - filename = "amount_1.png"; - await sim.clickRight(tmpPath + filename); - const amount_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_1).toMatchSnapshot(expected_amount_1); +test('[Nano X] Transfer on network 112233445566 on Ethereum', zemu("nanox", async (sim, eth) => { - // Amount 2/3 - filename = "amount_2.png"; - await sim.clickRight(tmpPath + filename); - const amount_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_2).toMatchSnapshot(expected_amount_2); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf6181880851a21a278be8080', + ); - // Amount 3/3 - filename = "amount_3.png"; - await sim.clickRight(tmpPath + filename); - const amount_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_3).toMatchSnapshot(expected_amount_3); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_transfer_112233445566_network', [5, 0]); - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); + await expect(tx).resolves.toEqual({ + "r": "509981d8dfb66757e25ff47c009b9b5bc5db0f169473e4735f5212b144f1c069", + "s": "5db989d81025de3c846e41a9ce01a3f9fd0982e2d827f1b88ffc95d73a48d04c", + "v": "344344f19f", + }); +})); - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); +test('[Nano X] Transfer on palm network on Ethereum', zemu("nanox", async (sim, eth) => { - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf61818808502a15c308d8080', + ); - // Network - filename = "network.png"; - await sim.clickRight(tmpPath + filename); - const network = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_network = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(network).toMatchSnapshot(expected_network); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_transfer_palm_network', [5, 0]); - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - { - "r": "31fca443b3cad62f3ce18e287f3cf4892ac2669379cc21b5cf198561f0511d1e", - "s": "3cf21485cd8b86e1acddbcc641e16a3efad18aaeb5ae96a650f1a8b291078494", - "v": "344344f1a0", - } - ); - } finally { - await sim.close(); - } -}); - -test("Transfer on palm network on Ethereum nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanos); - - let transport = await sim.getTransport(); - let eth = new Eth(transport); - - // Send transaction - let tx = eth.signTransaction( - "44'/60'/0'/0/0", - "f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf61818808502a15c308d8080" - ); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount 1/3 - filename = "amount_1_palm.png"; - await sim.clickRight(tmpPath + filename); - const amount_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_1).toMatchSnapshot(expected_amount_1); - - // Amount 2/3 - filename = "amount_2.png"; - await sim.clickRight(tmpPath + filename); - const amount_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_2).toMatchSnapshot(expected_amount_2); - - // Amount 3/3 - filename = "amount_3.png"; - await sim.clickRight(tmpPath + filename); - const amount_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_3).toMatchSnapshot(expected_amount_3); - - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); - - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); - - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); - - // Network - filename = "palm.png"; - await sim.clickRight(tmpPath + filename); - const network = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_network = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(network).toMatchSnapshot(expected_network); - - // Max Fees - filename = "fees_palm.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - { - "r": "f9b5d903c47c34027156e869bda5aa002233d6cca583ad53d125612fc0795f3b", - "s": "00da038129414e5ae6f7c1529c6067e82484e3694c84c16d575e77162f631c27", - "v": "0542b8613d", - } - ); - } finally { - await sim.close(); - } -}); - -test("Transfer on network 112233445566 on Ethereum nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - let eth = new Eth(transport); - - // Send transaction - let tx = eth.signTransaction( - "44'/60'/0'/0/0", - "f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf6181880851a21a278be8080" - ) - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Network - filename = "network.png"; - await sim.clickRight(tmpPath + filename); - const network = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_network = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(network).toMatchSnapshot(expected_network); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - { - "r": "31fca443b3cad62f3ce18e287f3cf4892ac2669379cc21b5cf198561f0511d1e", - "s": "3cf21485cd8b86e1acddbcc641e16a3efad18aaeb5ae96a650f1a8b291078494", - "v": "344344f1a0", - } - ); - } finally { - await sim.close(); - } -}); - -test("Transfer on palm network on Ethereum nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - let eth = new Eth(transport); - - // Send transaction - let tx = eth.signTransaction( - "44'/60'/0'/0/0", - "f044850306dc4200825208945a321744667052affa8386ed49e00ef223cbffc3876f9c9e7bf61818808502a15c308d8080" - ); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount - filename = "amount_palm.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Network - filename = "palm.png"; - await sim.clickRight(tmpPath + filename); - const network = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_network = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(network).toMatchSnapshot(expected_network); - - // Max Fees - filename = "fees_palm.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - { - "r": "f9b5d903c47c34027156e869bda5aa002233d6cca583ad53d125612fc0795f3b", - "s": "00da038129414e5ae6f7c1529c6067e82484e3694c84c16d575e77162f631c27", - "v": "0542b8613d", - } - ); - } finally { - await sim.close(); - } -}); \ No newline at end of file + await expect(tx).resolves.toEqual({ + "r": "946700c4972b3da24ddaa95e590ad25a8f905da62e2bd053285a4cc17f93f490", + "s": "3698e84564e58477a49f7a9cea572ef5d672a5538db08f3ee42df5eb75a1b907", + "v": "0542b8613d", + }); +})); \ No newline at end of file diff --git a/tests/src/contract_data_warning.test.js b/tests/src/contract_data_warning.test.js new file mode 100644 index 0000000..33fd434 --- /dev/null +++ b/tests/src/contract_data_warning.test.js @@ -0,0 +1,38 @@ +import 'core-js/stable'; +import 'regenerator-runtime/runtime'; +import { expect } from "../jest"; +import { TransportStatusError } from "@ledgerhq/errors"; +import { waitForAppScreen, zemu } from './test.fixture'; +import Zemu from '@zondax/zemu'; + +test('[Nano S] Try to blind sign with setting disabled', zemu("nanos", async (sim, eth) => { + // disable blind signing + await sim.navigateAndCompareSnapshots('.', 'nanos_disable_blind_signing', [2, 0, 0, 3, 0]); + + // we can't use eth.signTransaction because it detects that contract data is disabled and fails early + let transport = await sim.getTransport(); + let buffer = Buffer.from("058000002c8000003c800000010000000000000000f849208506fc23ac008303dc3194f650c3d88d12db855b8bf7d11be6c55a4e07dcc980a4a1712d6800000000000000000000000000000000000000000000000000000000000acbc7018080", "hex"); + let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); + + await expect(tx).rejects.toEqual(new TransportStatusError(0x6a80)); + + await Zemu.sleep(1000); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_try_to_blind_sign_with_setting_disabled', [1, 0]); +})); + +test('[Nano X] Try to blind sign with setting disabled', zemu("nanox", async (sim, eth) => { + // disable blind signing + await sim.navigateAndCompareSnapshots('.', 'nanox_disable_blind_signing', [2, 0, 0, 3, 0]); + + // we can't use eth.signTransaction because it detects that contract data is disabled and fails early + let transport = await sim.getTransport(); + let buffer = Buffer.from("058000002c8000003c800000010000000000000000f849208506fc23ac008303dc3194f650c3d88d12db855b8bf7d11be6c55a4e07dcc980a4a1712d6800000000000000000000000000000000000000000000000000000000000acbc7018080", "hex"); + let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); + + await expect(tx).rejects.toEqual(new TransportStatusError(0x6a80)); + + await Zemu.sleep(1000); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_try_to_blind_sign_with_setting_disabled', [0]); +})); \ No newline at end of file diff --git a/tests/src/deposit.test.js b/tests/src/deposit.test.js deleted file mode 100644 index 2aa054d..0000000 --- a/tests/src/deposit.test.js +++ /dev/null @@ -1,171 +0,0 @@ -import "core-js/stable"; -import "regenerator-runtime/runtime"; -import Eth from "@ledgerhq/hw-app-eth"; -import { byContractAddress } from "@ledgerhq/hw-app-eth/erc20"; -import Zemu from "@zondax/zemu"; -import { TransportStatusError } from "@ledgerhq/errors"; -import { expect } from "../jest"; - -const {NANOS_ELF_PATH, NANOX_ELF_PATH, sim_options_nanos, sim_options_nanox, TIMEOUT, getTmpPath} = require("generic.js"); - -// Adapt this prefix. -const ORIGINAL_SNAPSHOT_PATH_PREFIX = "snapshots/deposit/"; - -const ORIGINAL_SNAPSHOT_PATH_NANOS = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanos/"; -const ORIGINAL_SNAPSHOT_PATH_NANOX = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanox/"; - -test("Deposit ETH nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanos); - - let transport = await sim.getTransport(); - - let buffer = Buffer.from("058000002c8000003c800000010000000000000000f8924685028fa6ae008306599594cc9a0b7c43dc2a5f023bb9b738e45b0ef6b06e0488016345785d8a0000b864474cf53d0000000000000000000000007d2768de32b0b80b7a3454c06bdac94a69ddc7a900000000000000000000000070bc641723fad48be2df6cf63dc6270ee2f8974300000000000000000000000000000000", "hex"); - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - - buffer = Buffer.from("00000000000000000000000000000000018080", "hex"); - tx = transport.send(0xe0, 0x04, 0x80, 0x00, buffer); - - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); - - // Data present - filename = "data_present.png"; - await sim.clickRight(tmpPath + filename); - const data_present = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_data_present = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(data_present).toMatchSnapshot(expected_data_present); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); - - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); - - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([38, 181, 174, 58, 1, 30, 181, 14, 125, 31, 233, 245, 230, 246, 217, 28, 169, 244, 223, 202, 95, 115, 128, 95, 196, 134, 109, 73, 231, 46, 173, 47, 92, 60, 110, 85, 219, 89, 37, 88, 107, 181, 142, 67, 75, 88, 178, 192, 71, 86, 246, 98, 19, 21, 151, 249, 140, 26, 162, 65, 139, 22, 153, 43, 129, 144, 0]) - ); - } finally { - await sim.close(); - } -}); - -test("Deposit ETH nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - - let buffer = Buffer.from("058000002c8000003c800000010000000000000000f8924685028fa6ae008306599594cc9a0b7c43dc2a5f023bb9b738e45b0ef6b06e0488016345785d8a0000b864474cf53d0000000000000000000000007d2768de32b0b80b7a3454c06bdac94a69ddc7a900000000000000000000000070bc641723fad48be2df6cf63dc6270ee2f8974300000000000000000000000000000000", "hex"); - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - - buffer = Buffer.from("00000000000000000000000000000000018080", "hex"); - tx = transport.send(0xe0, 0x04, 0x80, 0x00, buffer); - - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Data present - filename = "data_present.png"; - await sim.clickRight(tmpPath + filename); - const data_present = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_data_present = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(data_present).toMatchSnapshot(expected_data_present); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([38, 181, 174, 58, 1, 30, 181, 14, 125, 31, 233, 245, 230, 246, 217, 28, 169, 244, 223, 202, 95, 115, 128, 95, 196, 134, 109, 73, 231, 46, 173, 47, 92, 60, 110, 85, 219, 89, 37, 88, 107, 181, 142, 67, 75, 88, 178, 192, 71, 86, 246, 98, 19, 21, 151, 249, 140, 26, 162, 65, 139, 22, 153, 43, 129, 144, 0]) - ); - } finally { - await sim.close(); - } -}); \ No newline at end of file diff --git a/tests/src/eip1559.test.js b/tests/src/eip1559.test.js index 4ad9427..10831c6 100644 --- a/tests/src/eip1559.test.js +++ b/tests/src/eip1559.test.js @@ -1,152 +1,39 @@ import "core-js/stable"; import "regenerator-runtime/runtime"; -import Eth from "@ledgerhq/hw-app-eth"; -import { byContractAddress } from "@ledgerhq/hw-app-eth/erc20"; -import Zemu from "@zondax/zemu"; -import { TransportStatusError } from "@ledgerhq/errors"; -import { expect } from "../jest"; +import { waitForAppScreen, zemu } from './test.fixture'; -const {NANOS_ELF_PATH, NANOX_ELF_PATH, sim_options_nanos, sim_options_nanox, TIMEOUT, getTmpPath} = require("generic.js"); +test('[Nano S] Transfer eip1559', zemu("nanos", async (sim, eth) => { -const ORIGINAL_SNAPSHOT_PATH_PREFIX = "snapshots/eip1559/"; + const tx = eth.signTransaction( + "44'/60'/0'/0/0", + '02f87001018502540be4008502540be40086246139ca800094cccccccccccccccccccccccccccccccccccccccc8000c001a0e07fb8a64ea3786c9a6649e54429e2786af3ea31c6d06165346678cf8ce44f9ba00e4a0526db1e905b7164a858fd5ebd2f1759e22e6955499448bd276a6aa62830', + ); -const ORIGINAL_SNAPSHOT_PATH_NANOS = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanos/"; -const ORIGINAL_SNAPSHOT_PATH_NANOX = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanox/"; + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_transfer_eip1559', [6, 0]); -test("Transfer nanos eip1559", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); + await expect(tx).resolves.toEqual({ + "r": "3d6dfabc6c52374bfa34cb2c433856a0bcd9484870dd1b50249f7164a5fce052", + "s": "0548a774dd0b63930d83cb2e1a836fe3ef24444e8b758b00585d9a076c0e98a8", + "v": "01" + }); - try { - await sim.start(sim_options_nanos); +})); - let transport = await sim.getTransport(); +test('[Nano X] Transfer eip1559', zemu("nanox", async (sim, eth) => { - // From this test: https://github.com/ethereum/tests/blob/5d534e37b80e9310e8c7751f805ca481a451123e/GeneralStateTests/stEIP1559/outOfFunds.json#L35 - let buffer = Buffer.from("058000002c8000003c80000000000000000000000002f87001018502540be4008502540be40086246139ca800094cccccccccccccccccccccccccccccccccccccccc8000c001a0e07fb8a64ea3786c9a6649e54429e2786af3ea31c6d06165346678cf8ce44f9ba00e4a0526db1e905b7164a858fd5ebd2f1759e22e6955499448bd276a6aa62830", "hex"); + const tx = eth.signTransaction( + "44'/60'/0'/0/0", + '02f87001018502540be4008502540be40086246139ca800094cccccccccccccccccccccccccccccccccccccccc8000c001a0e07fb8a64ea3786c9a6649e54429e2786af3ea31c6d06165346678cf8ce44f9ba00e4a0526db1e905b7164a858fd5ebd2f1759e22e6955499448bd276a6aa62830', + ); - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_transfer_eip1559', [4, 0]); - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); + await expect(tx).resolves.toEqual({ + "r": "3d6dfabc6c52374bfa34cb2c433856a0bcd9484870dd1b50249f7164a5fce052", + "s": "0548a774dd0b63930d83cb2e1a836fe3ef24444e8b758b00585d9a076c0e98a8", + "v": "01" + }); - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); - - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); - - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([1, 61, 109, 250, 188, 108, 82, 55, 75, 250, 52, 203, 44, 67, 56, 86, 160, 188, 217, 72, 72, 112, 221, 27, 80, 36, 159, 113, 100, 165, 252, 224, 82, 5, 72, 167, 116, 221, 11, 99, 147, 13, 131, 203, 46, 26, 131, 111, 227, 239, 36, 68, 78, 139, 117, 139, 0, 88, 93, 154, 7, 108, 14, 152, 168, 144, 0])); - } finally { - await sim.close(); - } -}); - -test("Transfer nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - - // From this test: https://github.com/ethereum/tests/blob/5d534e37b80e9310e8c7751f805ca481a451123e/GeneralStateTests/stEIP1559/outOfFunds.json#L35 - let buffer = Buffer.from("058000002c8000003c80000000000000000000000002f87001018502540be4008502540be40086246139ca800094cccccccccccccccccccccccccccccccccccccccc8000c001a0e07fb8a64ea3786c9a6649e54429e2786af3ea31c6d06165346678cf8ce44f9ba00e4a0526db1e905b7164a858fd5ebd2f1759e22e6955499448bd276a6aa62830", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([1, 61, 109, 250, 188, 108, 82, 55, 75, 250, 52, 203, 44, 67, 56, 86, 160, 188, 217, 72, 72, 112, 221, 27, 80, 36, 159, 113, 100, 165, 252, 224, 82, 5, 72, 167, 116, 221, 11, 99, 147, 13, 131, 203, 46, 26, 131, 111, 227, 239, 36, 68, 78, 139, 117, 139, 0, 88, 93, 154, 7, 108, 14, 152, 168, 144, 0])); - } finally { - await sim.close(); - } -}); \ No newline at end of file +})); \ No newline at end of file diff --git a/tests/src/generic.js b/tests/src/generic.js deleted file mode 100644 index dff7566..0000000 --- a/tests/src/generic.js +++ /dev/null @@ -1,53 +0,0 @@ -import fs from "fs"; - -const sim_options_nanos = { - model: "nanos", - logging: true, - start_delay: 2000, - X11: true, - custom: "", -}; - -const sim_options_nanox = { - model: "nanox", - logging: true, - start_delay: 2000, - X11: true, - custom: "", -}; - -const Resolve = require("path").resolve; -const NANOS_ELF_PATH = Resolve("elfs/ethereum_nanos.elf"); -const NANOX_ELF_PATH = Resolve("elfs/ethereum_nanox.elf"); - -const NANOS_ETH_LIB = { "Ethereum": NANOS_ELF_PATH }; -const NANOX_ETH_LIB = { "Ethereum": NANOX_ELF_PATH }; - -const NANOS_CLONE_ELF_PATH = Resolve("elfs/ethereum_classic_nanos.elf"); -const NANOX_CLONE_ELF_PATH = Resolve("elfs/ethereum_classic_nanox.elf"); - -const TIMEOUT = 1000000; - -const getTmpPath = (testName) => { - let date = new Date(); - let tmpPath = `snapshots/tmp/${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}@${testName}/`; - fs.mkdir(tmpPath, { recursive:true }, (err) => { - if(err) { - console.log("couldn't create tmp folder at path: " + tmpPath) - } - }); - return tmpPath; -} - -module.exports = { - NANOS_ELF_PATH, - NANOX_ELF_PATH, - NANOS_ETH_LIB, - NANOX_ETH_LIB, - NANOS_CLONE_ELF_PATH, - NANOX_CLONE_ELF_PATH, - sim_options_nanos, - sim_options_nanox, - TIMEOUT, - getTmpPath, -} \ No newline at end of file diff --git a/tests/src/send.test.js b/tests/src/send.test.js index 1ba03de..b71ad53 100644 --- a/tests/src/send.test.js +++ b/tests/src/send.test.js @@ -1,332 +1,71 @@ import "core-js/stable"; import "regenerator-runtime/runtime"; -import Eth from "@ledgerhq/hw-app-eth"; -import { byContractAddress } from "@ledgerhq/hw-app-eth/erc20"; -import Zemu from "@zondax/zemu"; -import { TransportStatusError } from "@ledgerhq/errors"; -import { expect } from "../jest"; +import { waitForAppScreen, zemu } from './test.fixture'; -const {NANOS_ELF_PATH, NANOX_ELF_PATH, sim_options_nanos, sim_options_nanox, TIMEOUT, getTmpPath} = require("generic.js"); +test('[Nano S] Transfer Ether on Ethereum app', zemu("nanos", async (sim, eth) => { -const ORIGINAL_SNAPSHOT_PATH_PREFIX = "snapshots/send/"; + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880018080', + ); -const ORIGINAL_SNAPSHOT_PATH_NANOS = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanos/"; -const ORIGINAL_SNAPSHOT_PATH_NANOX = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanox/"; + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_transfer_ethereum', [8, 0]); -test("Transfer Ether on Ethereum app nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); + await expect(tx).resolves.toEqual({ + "r": "6f389d15320f0501383526ed03de917c14212716f09a262dbc98431086a5db49", + "s": "0dc994b7b97230bb35fdf6fec2f4d8ff4cfb8bfeb2a652c364c738ff033c05dd", + "v": "26", + }); +})); - try { - await sim.start(sim_options_nanos); +test('[Nano S] Transfer Ether on network 5234 on Ethereum app', zemu("nanos", async (sim, eth) => { - let transport = await sim.getTransport(); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'ED44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080', + ); - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880018080", "hex"); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_transfer_ethereum_5234_network', [9, 0]); - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; + await expect(tx).resolves.toEqual({ + "r": "07a7982dfd16360c96a03467877d0cf9c36f799deff4dace250cdb18e28a3b90", + "s": "773318a93da2e32c1cf308ddd6add1e8c0d285973e541520a05fb4dc720e4fb1", + "v": "2908", + }); +})); - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); +test('[Nano X] Transfer Ether on Ethereum app', zemu("nanox", async (sim, eth) => { - // Amount 1/3 - filename = "amount_1.png"; - await sim.clickRight(tmpPath + filename); - const amount_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_1).toMatchSnapshot(expected_amount_1); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880018080', + ); - // Amount 2/3 - filename = "amount_2.png"; - await sim.clickRight(tmpPath + filename); - const amount_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_2).toMatchSnapshot(expected_amount_2); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_transfer_ethereum', [4, 0]); - // Amount 3/3 - filename = "amount_3.png"; - await sim.clickRight(tmpPath + filename); - const amount_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_3).toMatchSnapshot(expected_amount_3); + await expect(tx).resolves.toEqual({ + "r": "6f389d15320f0501383526ed03de917c14212716f09a262dbc98431086a5db49", + "s": "0dc994b7b97230bb35fdf6fec2f4d8ff4cfb8bfeb2a652c364c738ff033c05dd", + "v": "26", + }); +})); - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); +test('[Nano X] Transfer Ether on network 5234 on Ethereum app', zemu("nanox", async (sim, eth) => { - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'ED44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080', + ); - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_transfer_ethereum_5234_network', [5, 0]); - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([ 38, 111, 56, 157, 21, 50, 15, 5, 1, 56, 53, 38, 237, 3, 222, 145, 124, 20, 33, 39, 22, 240, 154, 38, 45, 188, 152, 67, 16, 134, 165, 219, 73, 13, 201, 148, 183, 185, 114, 48, 187, 53, 253, 246, 254, 194, 244, 216, 255, 76, 251, 139, 254, 178, 166, 82, 195, 100, 199, 56, 255, 3, 60, 5, 221, 144, 0]) - ); - } finally { - await sim.close(); - } -}); - -test("Transfer on network 5234 on Ethereum nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanos); - - let transport = await sim.getTransport(); - - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount 1/3 - filename = "amount_1.png"; - await sim.clickRight(tmpPath + filename); - const amount_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_1).toMatchSnapshot(expected_amount_1); - - // Amount 2/3 - filename = "amount_2.png"; - await sim.clickRight(tmpPath + filename); - const amount_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_2).toMatchSnapshot(expected_amount_2); - - // Amount 3/3 - filename = "amount_3.png"; - await sim.clickRight(tmpPath + filename); - const amount_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_3).toMatchSnapshot(expected_amount_3); - - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); - - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); - - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); - - // Network - filename = "network.png"; - await sim.clickRight(tmpPath + filename); - const network = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_network = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(network).toMatchSnapshot(expected_network); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from("08f3449bbc245669e26dd076986e11aa3117e2405ffe2ddc7a7e220f81326fbd91150515605c78119367be311345e9ff40c4e4ddb9ec0fd81f37035c3828f4c8b29000", 'hex') - ); - } finally { - await sim.close(); - } -}); - -test("Transfer Ether on Ethereum nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880018080", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([ 38, 111, 56, 157, 21, 50, 15, 5, 1, 56, 53, 38, 237, 3, 222, 145, 124, 20, 33, 39, 22, 240, 154, 38, 45, 188, 152, 67, 16, 134, 165, 219, 73, 13, 201, 148, 183, 185, 114, 48, 187, 53, 253, 246, 254, 194, 244, 216, 255, 76, 251, 139, 254, 178, 166, 82, 195, 100, 199, 56, 255, 3, 60, 5, 221, 144, 0]) - ); - } finally { - await sim.close(); - } -}); - - -test("Transfer on network 5234 on Ethereum nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Network - filename = "network.png"; - await sim.clickRight(tmpPath + filename); - const network = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_network = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(network).toMatchSnapshot(expected_network); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from("08f3449bbc245669e26dd076986e11aa3117e2405ffe2ddc7a7e220f81326fbd91150515605c78119367be311345e9ff40c4e4ddb9ec0fd81f37035c3828f4c8b29000", 'hex') - ); - } finally { - await sim.close(); - } -}); \ No newline at end of file + await expect(tx).resolves.toEqual({ + "r": "07a7982dfd16360c96a03467877d0cf9c36f799deff4dace250cdb18e28a3b90", + "s": "773318a93da2e32c1cf308ddd6add1e8c0d285973e541520a05fb4dc720e4fb1", + "v": "2908", + }); +})); diff --git a/tests/src/send_bsc.test.js b/tests/src/send_bsc.test.js index 8339b69..4e1bfa9 100644 --- a/tests/src/send_bsc.test.js +++ b/tests/src/send_bsc.test.js @@ -1,182 +1,37 @@ import "core-js/stable"; import "regenerator-runtime/runtime"; -import Eth from "@ledgerhq/hw-app-eth"; -import { byContractAddress } from "@ledgerhq/hw-app-eth/erc20"; -import Zemu from "@zondax/zemu"; -import { TransportStatusError } from "@ledgerhq/errors"; -import { expect } from "../jest"; +import { waitForAppScreen, zemu } from './test.fixture'; -const {NANOS_ELF_PATH, NANOX_ELF_PATH, sim_options_nanos, sim_options_nanox, TIMEOUT, getTmpPath} = require("generic.js"); +test('[Nano S] Transfer bsc', zemu("nanos", async (sim, eth) => { -const ORIGINAL_SNAPSHOT_PATH_PREFIX = "snapshots/send_bsc/"; + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'EB0185012A05F200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880388080', + ); -const ORIGINAL_SNAPSHOT_PATH_NANOS = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanos/"; -const ORIGINAL_SNAPSHOT_PATH_NANOX = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanox/"; + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_transfer_bsc', [9, 0]); + await expect(tx).resolves.toEqual({ + "r": "f667cc34e9815df4f052fb3463cdbe355fff5c1acf4e919b3539806521a059ad", + "s": "6b35492b7108d9d9e1cc7aede536ed6b3173197b56dd873cbc3b43e041d6f407", + "v": "93", + }); +})); -test("Transfer bsc nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); +test('[Nano X] Transfer bsc', zemu("nanox", async (sim, eth) => { - try { - await sim.start(sim_options_nanos); + const tx = eth.signTransaction( + "44'/60'/1'/0/0", + 'EB0185012A05F200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880388080', + ); - let transport = await sim.getTransport(); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_transfer_bsc', [5, 0]); - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB0185012A05F200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880388080", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount 1/3 - filename = "amount_1.png"; - await sim.clickRight(tmpPath + filename); - const amount_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_1).toMatchSnapshot(expected_amount_1); - - // Amount 2/3 - filename = "amount_2.png"; - await sim.clickRight(tmpPath + filename); - const amount_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_2).toMatchSnapshot(expected_amount_2); - - // Amount 3/3 - filename = "amount_3.png"; - await sim.clickRight(tmpPath + filename); - const amount_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_3).toMatchSnapshot(expected_amount_3); - - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); - - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); - - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); - - // Network name - filename = "network.png"; - await sim.clickRight(tmpPath + filename); - const chainid = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_chainid = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(chainid).toMatchSnapshot(expected_chainid); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([147, 246, 103, 204, 52, 233, 129, 93, 244, 240, 82, 251, 52, 99, 205, 190, 53, 95, 255, 92, 26, 207, 78, 145, 155, 53, 57, 128, 101, 33, 160, 89, 173, 107, 53, 73, 43, 113, 8, 217, 217, 225, 204, 122, 237, 229, 54, 237, 107, 49, 115, 25, 123, 86, 221, 135, 60, 188, 59, 67, 224, 65, 214, 244, 7, 144, 0]), - ); - - } finally { - await sim.close(); - } -}); - -test("Transfer bsc nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_ELF_PATH); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB0185012A05F200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880388080", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Network name - filename = "network.png"; - await sim.clickRight(tmpPath + filename); - const chainid = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_chainid = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(chainid).toMatchSnapshot(expected_chainid); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from([147, 246, 103, 204, 52, 233, 129, 93, 244, 240, 82, 251, 52, 99, 205, 190, 53, 95, 255, 92, 26, 207, 78, 145, 155, 53, 57, 128, 101, 33, 160, 89, 173, 107, 53, 73, 43, 113, 8, 217, 217, 225, 204, 122, 237, 229, 54, 237, 107, 49, 115, 25, 123, 86, 221, 135, 60, 188, 59, 67, 224, 65, 214, 244, 7, 144, 0]), - ); - - } finally { - await sim.close(); - } -}); \ No newline at end of file + await expect(tx).resolves.toEqual({ + "r": "f667cc34e9815df4f052fb3463cdbe355fff5c1acf4e919b3539806521a059ad", + "s": "6b35492b7108d9d9e1cc7aede536ed6b3173197b56dd873cbc3b43e041d6f407", + "v": "93", + }); +})); \ No newline at end of file diff --git a/tests/src/send_etc.test.js b/tests/src/send_etc.test.js index 0407144..5a2d76c 100644 --- a/tests/src/send_etc.test.js +++ b/tests/src/send_etc.test.js @@ -1,109 +1,13 @@ import "core-js/stable"; import "regenerator-runtime/runtime"; import Eth from "@ledgerhq/hw-app-eth"; -import { byContractAddress } from "@ledgerhq/hw-app-eth/erc20"; import Zemu from "@zondax/zemu"; -import { TransportStatusError } from "@ledgerhq/errors"; +import { EthAppPleaseEnableContractData } from "@ledgerhq/errors"; import { expect } from "../jest"; -const {NANOS_ETH_LIB, NANOX_ETH_LIB, NANOS_CLONE_ELF_PATH, NANOX_CLONE_ELF_PATH, sim_options_nanos, sim_options_nanox, TIMEOUT, getTmpPath} = require("generic.js"); +import { waitForAppScreen, NANOS_ETH_LIB, NANOX_ETH_LIB, NANOS_CLONE_ELF_PATH, NANOX_CLONE_ELF_PATH, sim_options_nanos, sim_options_nanox, TIMEOUT} from './test.fixture'; -const ORIGINAL_SNAPSHOT_PATH_PREFIX = "snapshots/send_etc/"; - -const ORIGINAL_SNAPSHOT_PATH_NANOS = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanos/"; -const ORIGINAL_SNAPSHOT_PATH_NANOX = ORIGINAL_SNAPSHOT_PATH_PREFIX + "nanox/"; - - -test("Transfer on Ethereum clone app nanos", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOS_CLONE_ELF_PATH, NANOS_ETH_LIB); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanos); - - let transport = await sim.getTransport(); - - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818803D8080", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount 1/3 - filename = "amount_1.png"; - await sim.clickRight(tmpPath + filename); - const amount_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_1).toMatchSnapshot(expected_amount_1); - - // Amount 2/3 - filename = "amount_2.png"; - await sim.clickRight(tmpPath + filename); - const amount_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_2).toMatchSnapshot(expected_amount_2); - - // Amount 3/3 - filename = "amount_3.png"; - await sim.clickRight(tmpPath + filename); - const amount_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(amount_3).toMatchSnapshot(expected_amount_3); - - // Address 1/3 - filename = "address_1.png"; - await sim.clickRight(tmpPath + filename); - const address_1 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_1 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_1).toMatchSnapshot(expected_address_1); - - // Address 2/3 - filename = "address_2.png"; - await sim.clickRight(tmpPath + filename); - const address_2 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_2 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_2).toMatchSnapshot(expected_address_2); - - // Address 3/3 - filename = "address_3.png"; - await sim.clickRight(tmpPath + filename); - const address_3 = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address_3 = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(address_3).toMatchSnapshot(expected_address_3); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOS + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - await expect(tx).resolves.toEqual( - Buffer.from("9e52b80e10cb82f3dc8345005e3da3f9cae1fb3f2b9a5df05b7cedba786c685fed381875af27d121beaa9efd8a7450975f9d45a26ba5aa331b7a8b26bcce95e6d09000", 'hex') - ); - } finally { - await sim.close(); - } -}); - -test("Transfer on network 5234 on Ethereum clone nanos", async () => { +test("[Nano S] Transfer on Ethereum clone app", async () => { jest.setTimeout(TIMEOUT); const sim = new Zemu(NANOS_CLONE_ELF_PATH, NANOS_ETH_LIB); @@ -112,81 +16,51 @@ test("Transfer on network 5234 on Ethereum clone nanos", async () => { let transport = await sim.getTransport(); - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080", "hex"); + const eth = new Eth(transport); - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - - await expect(tx).rejects.toEqual(new TransportStatusError(0x6a80)); - - } finally { - await sim.close(); - } -}); - -test("Transfer on Ethereum clone nanox", async () => { - jest.setTimeout(TIMEOUT); - const sim = new Zemu(NANOX_CLONE_ELF_PATH, NANOX_ETH_LIB); - let tmpPath = getTmpPath(expect.getState().currentTestName); - - try { - await sim.start(sim_options_nanox); - - let transport = await sim.getTransport(); - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818803D8080", "hex"); - - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); - let filename; - - await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); - // Review tx - filename = "review.png"; - await sim.snapshot(tmpPath + filename); - const review = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_review = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(review).toMatchSnapshot(expected_review); - - // Amount - filename = "amount.png"; - await sim.clickRight(tmpPath + filename); - const amount = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_amount = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(amount).toMatchSnapshot(expected_amount); - - // Address - filename = "address.png"; - await sim.clickRight(tmpPath + filename); - const address = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_address = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(address).toMatchSnapshot(expected_address); - - // Max Fees - filename = "fees.png"; - await sim.clickRight(tmpPath + filename); - const fees = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_fees = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(fees).toMatchSnapshot(expected_fees); - - // Accept - filename = "accept.png"; - await sim.clickRight(tmpPath + filename); - const accept = Zemu.LoadPng2RGB(tmpPath + filename); - const expected_accept = Zemu.LoadPng2RGB(ORIGINAL_SNAPSHOT_PATH_NANOX + filename); - expect(accept).toMatchSnapshot(expected_accept); - - await sim.clickBoth(); - - await expect(tx).resolves.toEqual( - Buffer.from("9e52b80e10cb82f3dc8345005e3da3f9cae1fb3f2b9a5df05b7cedba786c685fed381875af27d121beaa9efd8a7450975f9d45a26ba5aa331b7a8b26bcce95e6d09000", 'hex') + const tx = eth.signTransaction( + "44'/60'/0'/0/0", + 'EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818803D8080', ); + + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanos_transfer_ethereum_clone', [8, 0]); + + await expect(tx).resolves.toEqual({ + "r": "60df850d297e355596f87dc313a742032de4b59c5579186b3d59bdf31402fec0", + "s": "23c3a2beacabc1943d487a2e1d545e4c46c718b1e70e9d1c11a98828c9338927", + "v": "9e", + }); } finally { await sim.close(); } }); +test("[Nano S] Transfer on network 5234 on Ethereum clone", async () => { + jest.setTimeout(TIMEOUT); + const sim = new Zemu(NANOS_CLONE_ELF_PATH, NANOS_ETH_LIB); -test("Transfer on network 5234 on Ethereum clone nanox", async () => { + try { + await sim.start(sim_options_nanos); + + let transport = await sim.getTransport(); + + const eth = new Eth(transport); + + const tx = eth.signTransaction( + "44'/60'/0'/0/0", + 'ED44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080', + ); + + await expect(tx).rejects.toEqual(new EthAppPleaseEnableContractData( + "Please enable Contract data on the Ethereum app Settings" + )); + } finally { + await sim.close(); + } +}); + +test("[Nano X] Transfer on Ethereum clone app", async () => { jest.setTimeout(TIMEOUT); const sim = new Zemu(NANOX_CLONE_ELF_PATH, NANOX_ETH_LIB); @@ -195,12 +69,45 @@ test("Transfer on network 5234 on Ethereum clone nanox", async () => { let transport = await sim.getTransport(); - let buffer = Buffer.from("058000002C8000003C800000010000000000000000EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080", "hex"); + const eth = new Eth(transport); - // Send transaction - let tx = transport.send(0xe0, 0x04, 0x00, 0x00, buffer); + const tx = eth.signTransaction( + "44'/60'/0'/0/0", + 'EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818803D8080', + ); - await expect(tx).rejects.toEqual(new TransportStatusError(0x6a80)); + await waitForAppScreen(sim); + await sim.navigateAndCompareSnapshots('.', 'nanox_transfer_ethereum_clone', [4, 0]); + + await expect(tx).resolves.toEqual({ + "r": "60df850d297e355596f87dc313a742032de4b59c5579186b3d59bdf31402fec0", + "s": "23c3a2beacabc1943d487a2e1d545e4c46c718b1e70e9d1c11a98828c9338927", + "v": "9e", + }); + } finally { + await sim.close(); + } +}); + +test("[Nano X] Transfer on network 5234 on Ethereum clone", async () => { + jest.setTimeout(TIMEOUT); + const sim = new Zemu(NANOX_CLONE_ELF_PATH, NANOX_ETH_LIB); + + try { + await sim.start(sim_options_nanox); + + let transport = await sim.getTransport(); + + const eth = new Eth(transport); + + const tx = eth.signTransaction( + "44'/60'/0'/0/0", + 'ED44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF61818808214728080', + ); + + await expect(tx).rejects.toEqual(new EthAppPleaseEnableContractData( + "Please enable Contract data on the Ethereum app Settings" + )); } finally { await sim.close(); } diff --git a/tests/src/test.fixture.js b/tests/src/test.fixture.js new file mode 100644 index 0000000..fcad8f7 --- /dev/null +++ b/tests/src/test.fixture.js @@ -0,0 +1,75 @@ +import Zemu from '@zondax/zemu'; +import Eth from '@ledgerhq/hw-app-eth'; + +const transactionUploadDelay = 60000; + +async function waitForAppScreen(sim) { + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot(), transactionUploadDelay); +} + +const sim_options_nanos = { + model: 'nanos', + logging: true, + X11: true, + startDelay: 5000, + custom: '', +}; + +const sim_options_nanox = { + model: 'nanox', + logging: true, + X11: true, + startDelay: 5000, + custom: '', +}; + +const Resolve = require('path').resolve; + +const NANOS_ELF_PATH = Resolve('elfs/ethereum_nanos.elf'); +const NANOX_ELF_PATH = Resolve('elfs/ethereum_nanox.elf'); + +const NANOS_ETH_LIB = { "Ethereum": NANOS_ELF_PATH }; +const NANOX_ETH_LIB = { "Ethereum": NANOX_ELF_PATH }; + +const NANOS_CLONE_ELF_PATH = Resolve("elfs/ethereum_classic_nanos.elf"); +const NANOX_CLONE_ELF_PATH = Resolve("elfs/ethereum_classic_nanox.elf"); + +const TIMEOUT = 1000000; + +function zemu(device, func) { + return async () => { + jest.setTimeout(TIMEOUT); + let zemu_args; + let sim_options; + if(device === "nanos") { + zemu_args = [NANOS_ELF_PATH]; + sim_options = sim_options_nanos; + } + else { + zemu_args = [NANOX_ELF_PATH]; + sim_options = sim_options_nanox; + } + const sim = new Zemu(...zemu_args); + try { + await sim.start(sim_options); + const transport = await sim.getTransport(); + await func(sim, new Eth(transport)); + } finally { + await sim.close(); + } + }; +} + +module.exports = { + zemu, + waitForAppScreen, + NANOS_ELF_PATH, + NANOX_ELF_PATH, + NANOS_ETH_LIB, + NANOX_ETH_LIB, + NANOS_CLONE_ELF_PATH, + NANOX_CLONE_ELF_PATH, + sim_options_nanos, + sim_options_nanox, + TIMEOUT +} \ No newline at end of file