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 3bb21d5..0000000 Binary files a/tests/snapshots/deposit/nanos/data_present.png and /dev/null differ diff --git a/tests/snapshots/deposit/nanox/data_present.png b/tests/snapshots/deposit/nanox/data_present.png deleted file mode 100644 index dd2bbf9..0000000 Binary files a/tests/snapshots/deposit/nanox/data_present.png and /dev/null differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_approve_dai_tokens/00008.png differ 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 0000000..942f5a6 Binary files /dev/null and b/tests/snapshots/nanos_deposit_eth_compound_blind/00001.png differ diff --git a/tests/snapshots/deposit/nanos/amount.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00002.png similarity index 100% rename from tests/snapshots/deposit/nanos/amount.png rename to tests/snapshots/nanos_deposit_eth_compound_blind/00002.png diff --git a/tests/snapshots/deposit/nanos/address_1.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00003.png similarity index 100% rename from tests/snapshots/deposit/nanos/address_1.png rename to tests/snapshots/nanos_deposit_eth_compound_blind/00003.png diff --git a/tests/snapshots/deposit/nanos/address_2.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00004.png similarity index 100% rename from tests/snapshots/deposit/nanos/address_2.png rename to tests/snapshots/nanos_deposit_eth_compound_blind/00004.png diff --git a/tests/snapshots/deposit/nanos/address_3.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00005.png similarity index 100% rename from tests/snapshots/deposit/nanos/address_3.png rename to tests/snapshots/nanos_deposit_eth_compound_blind/00005.png diff --git a/tests/snapshots/deposit/nanos/fees.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00006.png similarity index 100% rename from tests/snapshots/deposit/nanos/fees.png rename to tests/snapshots/nanos_deposit_eth_compound_blind/00006.png diff --git a/tests/snapshots/chainid/nanos/accept.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00007.png similarity index 100% rename from tests/snapshots/chainid/nanos/accept.png rename to tests/snapshots/nanos_deposit_eth_compound_blind/00007.png diff --git a/tests/snapshots/nanos_deposit_eth_compound_blind/00008.png b/tests/snapshots/nanos_deposit_eth_compound_blind/00008.png new file mode 100644 index 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_deposit_eth_compound_blind/00008.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00000.png differ 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 0000000..78f3ae4 Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00001.png differ diff --git a/tests/snapshots/nanos_disable_blind_signing/00002.png b/tests/snapshots/nanos_disable_blind_signing/00002.png new file mode 100644 index 0000000..d4bd8ad Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00002.png differ diff --git a/tests/snapshots/nanos_disable_blind_signing/00003.png b/tests/snapshots/nanos_disable_blind_signing/00003.png new file mode 100644 index 0000000..7b3e0ea Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00003.png differ 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 0000000..e4ad84f Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00004.png differ 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 0000000..28e70e8 Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00005.png differ diff --git a/tests/snapshots/nanos_disable_blind_signing/00006.png b/tests/snapshots/nanos_disable_blind_signing/00006.png new file mode 100644 index 0000000..c844a37 Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00006.png differ diff --git a/tests/snapshots/nanos_disable_blind_signing/00007.png b/tests/snapshots/nanos_disable_blind_signing/00007.png new file mode 100644 index 0000000..be02838 Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00007.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_disable_blind_signing/00008.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_transfer_112233445566_network/00010.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_transfer_bsc/00010.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_transfer_eip1559/00007.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum/00009.png differ 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 0000000..4cd3e38 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_5234_network/00001.png differ 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 0000000..8b996b5 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_5234_network/00008.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_5234_network/00010.png differ 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 0000000..2994983 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00000.png differ 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 0000000..11ae75e Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00002.png differ 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 0000000..e042010 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00003.png differ 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 0000000..f979f71 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00004.png differ 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 0000000..93c90c5 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00005.png differ 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 0000000..402c20d Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00006.png differ diff --git a/tests/snapshots/send_etc/nanos/fees.png b/tests/snapshots/nanos_transfer_ethereum_clone/00007.png similarity index 100% rename from tests/snapshots/send_etc/nanos/fees.png rename to tests/snapshots/nanos_transfer_ethereum_clone/00007.png diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00008.png b/tests/snapshots/nanos_transfer_ethereum_clone/00008.png new file mode 100644 index 0000000..3158ea6 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00008.png differ diff --git a/tests/snapshots/nanos_transfer_ethereum_clone/00009.png b/tests/snapshots/nanos_transfer_ethereum_clone/00009.png new file mode 100644 index 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_transfer_ethereum_clone/00009.png differ 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 0000000..2994983 Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00000.png differ 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 0000000..11ae75e Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00002.png differ 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 0000000..e042010 Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00003.png differ 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 0000000..f979f71 Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00004.png differ 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 0000000..93c90c5 Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00005.png differ 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 0000000..402c20d Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00006.png differ diff --git a/tests/snapshots/chainid/nanos/palm.png b/tests/snapshots/nanos_transfer_palm_network/00007.png similarity index 100% rename from tests/snapshots/chainid/nanos/palm.png rename to tests/snapshots/nanos_transfer_palm_network/00007.png diff --git a/tests/snapshots/chainid/nanos/fees_palm.png b/tests/snapshots/nanos_transfer_palm_network/00008.png similarity index 100% rename from tests/snapshots/chainid/nanos/fees_palm.png rename to tests/snapshots/nanos_transfer_palm_network/00008.png diff --git a/tests/snapshots/nanos_transfer_palm_network/00009.png b/tests/snapshots/nanos_transfer_palm_network/00009.png new file mode 100644 index 0000000..3158ea6 Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00009.png differ diff --git a/tests/snapshots/nanos_transfer_palm_network/00010.png b/tests/snapshots/nanos_transfer_palm_network/00010.png new file mode 100644 index 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_transfer_palm_network/00010.png differ 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 0000000..e47d648 Binary files /dev/null and b/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00000.png differ 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 0000000..b4443b6 Binary files /dev/null and b/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00001.png differ 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 0000000..0bef4f3 Binary files /dev/null and b/tests/snapshots/nanos_try_to_blind_sign_with_setting_disabled/00002.png differ 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 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_approve_dai_tokens/00006.png differ diff --git a/tests/snapshots/chainid/nanox/review.png b/tests/snapshots/nanox_deposit_eth_compound_blind/00000.png similarity index 100% rename from tests/snapshots/chainid/nanox/review.png rename to tests/snapshots/nanox_deposit_eth_compound_blind/00000.png diff --git a/tests/snapshots/nanox_deposit_eth_compound_blind/00001.png b/tests/snapshots/nanox_deposit_eth_compound_blind/00001.png new file mode 100644 index 0000000..2d580d8 Binary files /dev/null and b/tests/snapshots/nanox_deposit_eth_compound_blind/00001.png differ 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 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_deposit_eth_compound_blind/00006.png differ diff --git a/tests/snapshots/nanox_disable_blind_signing/00000.png b/tests/snapshots/nanox_disable_blind_signing/00000.png new file mode 100644 index 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00000.png differ diff --git a/tests/snapshots/nanox_disable_blind_signing/00001.png b/tests/snapshots/nanox_disable_blind_signing/00001.png new file mode 100644 index 0000000..77762c6 Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00001.png differ diff --git a/tests/snapshots/nanox_disable_blind_signing/00002.png b/tests/snapshots/nanox_disable_blind_signing/00002.png new file mode 100644 index 0000000..9230349 Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00002.png differ diff --git a/tests/snapshots/nanox_disable_blind_signing/00003.png b/tests/snapshots/nanox_disable_blind_signing/00003.png new file mode 100644 index 0000000..75f5f7c Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00003.png differ 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 0000000..ed04d70 Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00004.png differ diff --git a/tests/snapshots/nanox_disable_blind_signing/00005.png b/tests/snapshots/nanox_disable_blind_signing/00005.png new file mode 100644 index 0000000..ed01866 Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00005.png differ diff --git a/tests/snapshots/nanox_disable_blind_signing/00006.png b/tests/snapshots/nanox_disable_blind_signing/00006.png new file mode 100644 index 0000000..9ce4343 Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00006.png differ 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 0000000..bc8064a Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00007.png differ diff --git a/tests/snapshots/nanox_disable_blind_signing/00008.png b/tests/snapshots/nanox_disable_blind_signing/00008.png new file mode 100644 index 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_disable_blind_signing/00008.png differ diff --git a/tests/snapshots/deposit/nanox/review.png b/tests/snapshots/nanox_transfer_112233445566_network/00000.png similarity index 100% rename from tests/snapshots/deposit/nanox/review.png rename to tests/snapshots/nanox_transfer_112233445566_network/00000.png diff --git a/tests/snapshots/chainid/nanox/amount.png b/tests/snapshots/nanox_transfer_112233445566_network/00001.png similarity index 100% rename from tests/snapshots/chainid/nanox/amount.png rename to tests/snapshots/nanox_transfer_112233445566_network/00001.png diff --git a/tests/snapshots/chainid/nanox/address.png b/tests/snapshots/nanox_transfer_112233445566_network/00002.png similarity index 100% rename from tests/snapshots/chainid/nanox/address.png rename to tests/snapshots/nanox_transfer_112233445566_network/00002.png diff --git a/tests/snapshots/chainid/nanox/network.png b/tests/snapshots/nanox_transfer_112233445566_network/00003.png similarity index 100% rename from tests/snapshots/chainid/nanox/network.png rename to tests/snapshots/nanox_transfer_112233445566_network/00003.png diff --git a/tests/snapshots/chainid/nanox/fees.png b/tests/snapshots/nanox_transfer_112233445566_network/00004.png similarity index 100% rename from tests/snapshots/chainid/nanox/fees.png rename to tests/snapshots/nanox_transfer_112233445566_network/00004.png diff --git a/tests/snapshots/deposit/nanox/accept.png b/tests/snapshots/nanox_transfer_112233445566_network/00005.png similarity index 100% rename from tests/snapshots/deposit/nanox/accept.png rename to tests/snapshots/nanox_transfer_112233445566_network/00005.png diff --git a/tests/snapshots/nanox_transfer_112233445566_network/00006.png b/tests/snapshots/nanox_transfer_112233445566_network/00006.png new file mode 100644 index 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_112233445566_network/00006.png differ diff --git a/tests/snapshots/eip1559/nanox/review.png b/tests/snapshots/nanox_transfer_bsc/00000.png similarity index 100% rename from tests/snapshots/eip1559/nanox/review.png rename to tests/snapshots/nanox_transfer_bsc/00000.png diff --git a/tests/snapshots/send_bsc/nanox/amount.png b/tests/snapshots/nanox_transfer_bsc/00001.png similarity index 100% rename from tests/snapshots/send_bsc/nanox/amount.png rename to tests/snapshots/nanox_transfer_bsc/00001.png diff --git a/tests/snapshots/send/nanox/address.png b/tests/snapshots/nanox_transfer_bsc/00002.png similarity index 100% rename from tests/snapshots/send/nanox/address.png rename to tests/snapshots/nanox_transfer_bsc/00002.png diff --git a/tests/snapshots/send_bsc/nanox/network.png b/tests/snapshots/nanox_transfer_bsc/00003.png similarity index 100% rename from tests/snapshots/send_bsc/nanox/network.png rename to tests/snapshots/nanox_transfer_bsc/00003.png diff --git a/tests/snapshots/send_bsc/nanox/fees.png b/tests/snapshots/nanox_transfer_bsc/00004.png similarity index 100% rename from tests/snapshots/send_bsc/nanox/fees.png rename to tests/snapshots/nanox_transfer_bsc/00004.png diff --git a/tests/snapshots/eip1559/nanox/accept.png b/tests/snapshots/nanox_transfer_bsc/00005.png similarity index 100% rename from tests/snapshots/eip1559/nanox/accept.png rename to tests/snapshots/nanox_transfer_bsc/00005.png diff --git a/tests/snapshots/nanox_transfer_bsc/00006.png b/tests/snapshots/nanox_transfer_bsc/00006.png new file mode 100644 index 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_bsc/00006.png differ diff --git a/tests/snapshots/send/nanox/review.png b/tests/snapshots/nanox_transfer_eip1559/00000.png similarity index 100% rename from tests/snapshots/send/nanox/review.png rename to tests/snapshots/nanox_transfer_eip1559/00000.png diff --git a/tests/snapshots/eip1559/nanox/amount.png b/tests/snapshots/nanox_transfer_eip1559/00001.png similarity index 100% rename from tests/snapshots/eip1559/nanox/amount.png rename to tests/snapshots/nanox_transfer_eip1559/00001.png diff --git a/tests/snapshots/eip1559/nanox/address.png b/tests/snapshots/nanox_transfer_eip1559/00002.png similarity index 100% rename from tests/snapshots/eip1559/nanox/address.png rename to tests/snapshots/nanox_transfer_eip1559/00002.png diff --git a/tests/snapshots/eip1559/nanox/fees.png b/tests/snapshots/nanox_transfer_eip1559/00003.png similarity index 100% rename from tests/snapshots/eip1559/nanox/fees.png rename to tests/snapshots/nanox_transfer_eip1559/00003.png diff --git a/tests/snapshots/send/nanox/accept.png b/tests/snapshots/nanox_transfer_eip1559/00004.png similarity index 100% rename from tests/snapshots/send/nanox/accept.png rename to tests/snapshots/nanox_transfer_eip1559/00004.png diff --git a/tests/snapshots/nanox_transfer_eip1559/00005.png b/tests/snapshots/nanox_transfer_eip1559/00005.png new file mode 100644 index 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_eip1559/00005.png differ diff --git a/tests/snapshots/send_bsc/nanox/review.png b/tests/snapshots/nanox_transfer_ethereum/00000.png similarity index 100% rename from tests/snapshots/send_bsc/nanox/review.png rename to tests/snapshots/nanox_transfer_ethereum/00000.png diff --git a/tests/snapshots/send/nanox/amount.png b/tests/snapshots/nanox_transfer_ethereum/00001.png similarity index 100% rename from tests/snapshots/send/nanox/amount.png rename to tests/snapshots/nanox_transfer_ethereum/00001.png diff --git a/tests/snapshots/send_bsc/nanox/address.png b/tests/snapshots/nanox_transfer_ethereum/00002.png similarity index 100% rename from tests/snapshots/send_bsc/nanox/address.png rename to tests/snapshots/nanox_transfer_ethereum/00002.png diff --git a/tests/snapshots/send/nanox/fees.png b/tests/snapshots/nanox_transfer_ethereum/00003.png similarity index 100% rename from tests/snapshots/send/nanox/fees.png rename to tests/snapshots/nanox_transfer_ethereum/00003.png diff --git a/tests/snapshots/send_bsc/nanox/accept.png b/tests/snapshots/nanox_transfer_ethereum/00004.png similarity index 100% rename from tests/snapshots/send_bsc/nanox/accept.png rename to tests/snapshots/nanox_transfer_ethereum/00004.png diff --git a/tests/snapshots/nanox_transfer_ethereum/00005.png b/tests/snapshots/nanox_transfer_ethereum/00005.png new file mode 100644 index 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum/00005.png differ diff --git a/tests/snapshots/send_etc/nanox/review.png b/tests/snapshots/nanox_transfer_ethereum_5234_network/00000.png similarity index 100% rename from tests/snapshots/send_etc/nanox/review.png rename to tests/snapshots/nanox_transfer_ethereum_5234_network/00000.png diff --git a/tests/snapshots/nanox_transfer_ethereum_5234_network/00001.png b/tests/snapshots/nanox_transfer_ethereum_5234_network/00001.png new file mode 100644 index 0000000..a5592a6 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum_5234_network/00001.png differ diff --git a/tests/snapshots/send_etc/nanox/address.png b/tests/snapshots/nanox_transfer_ethereum_5234_network/00002.png similarity index 100% rename from tests/snapshots/send_etc/nanox/address.png rename to tests/snapshots/nanox_transfer_ethereum_5234_network/00002.png diff --git a/tests/snapshots/send/nanox/network.png b/tests/snapshots/nanox_transfer_ethereum_5234_network/00003.png similarity index 100% rename from tests/snapshots/send/nanox/network.png rename to tests/snapshots/nanox_transfer_ethereum_5234_network/00003.png diff --git a/tests/snapshots/nanox_transfer_ethereum_5234_network/00004.png b/tests/snapshots/nanox_transfer_ethereum_5234_network/00004.png new file mode 100644 index 0000000..a67fa25 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum_5234_network/00004.png differ 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 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum_5234_network/00006.png differ diff --git a/tests/snapshots/nanox_transfer_ethereum_clone/00000.png b/tests/snapshots/nanox_transfer_ethereum_clone/00000.png new file mode 100644 index 0000000..4a982c5 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum_clone/00000.png differ 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 0000000..4228ae1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum_clone/00002.png differ 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 0000000..a2cb8f9 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum_clone/00004.png differ 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 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_ethereum_clone/00005.png differ diff --git a/tests/snapshots/nanox_transfer_palm_network/00000.png b/tests/snapshots/nanox_transfer_palm_network/00000.png new file mode 100644 index 0000000..4a982c5 Binary files /dev/null and b/tests/snapshots/nanox_transfer_palm_network/00000.png differ 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 0000000..4228ae1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_palm_network/00002.png differ 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 0000000..a2cb8f9 Binary files /dev/null and b/tests/snapshots/nanox_transfer_palm_network/00005.png differ 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 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_transfer_palm_network/00006.png differ diff --git a/tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00000.png b/tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00000.png new file mode 100644 index 0000000..d5722b0 Binary files /dev/null and b/tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00000.png differ 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 0000000..7a77cb1 Binary files /dev/null and b/tests/snapshots/nanox_try_to_blind_sign_with_setting_disabled/00001.png differ diff --git a/tests/src/approve.test.js b/tests/src/approve.test.js index ec5e01e..fea24a5 100644 --- a/tests/src/approve.test.js +++ b/tests/src/approve.test.js @@ -1,175 +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] Approve DAI tokens', zemu("nanos", async (sim, eth) => { -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