From 9a4d193de2af6f54f050e5b661620defdc002b16 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 14 Feb 2022 18:24:21 +0100 Subject: [PATCH] Added new tests for ERC-721 --- .../nanox_erc721_transfer_wo_info/00000.png | 1 + .../nanox_erc721_transfer_wo_info/00001.png | 1 + .../nanox_erc721_transfer_wo_info/00002.png | 1 + .../nanox_erc721_transfer_wo_info/00003.png | Bin 0 -> 457 bytes .../nanox_erc721_transfer_wo_info/00004.png | 1 + .../nanox_erc721_transfer_wo_info/00005.png | 1 + .../nanox_erc721_transfer_wo_info/00006.png | 1 + .../nanox_erc721_transfer_wo_info/00007.png | 1 + .../nanox_erc721_transfer_wo_info/00008.png | 1 + .../nanox_erc721_transfer_wo_info/00009.png | 1 + .../nanox_erc721_transfer_wo_info/00010.png | 1 + tests/src/erc721.test.js | 49 +++++++++++++----- tests/src/test.fixture.js | 10 ++-- 13 files changed, 50 insertions(+), 19 deletions(-) create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00000.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00001.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00002.png create mode 100644 tests/snapshots/nanox_erc721_transfer_wo_info/00003.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00004.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00005.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00006.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00007.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00008.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00009.png create mode 120000 tests/snapshots/nanox_erc721_transfer_wo_info/00010.png diff --git a/tests/snapshots/nanox_erc721_transfer_wo_info/00000.png b/tests/snapshots/nanox_erc721_transfer_wo_info/00000.png new file mode 120000 index 0000000..eaca370 --- /dev/null +++ b/tests/snapshots/nanox_erc721_transfer_wo_info/00000.png @@ -0,0 +1 @@ +../nanox_erc721_transfer/00000.png \ No newline at end of file diff --git a/tests/snapshots/nanox_erc721_transfer_wo_info/00001.png b/tests/snapshots/nanox_erc721_transfer_wo_info/00001.png new file mode 120000 index 0000000..3f02420 --- /dev/null +++ b/tests/snapshots/nanox_erc721_transfer_wo_info/00001.png @@ -0,0 +1 @@ +../nanox_erc721_transfer/00001.png \ No newline at end of file diff --git a/tests/snapshots/nanox_erc721_transfer_wo_info/00002.png b/tests/snapshots/nanox_erc721_transfer_wo_info/00002.png new file mode 120000 index 0000000..55b219f --- /dev/null +++ b/tests/snapshots/nanox_erc721_transfer_wo_info/00002.png @@ -0,0 +1 @@ +../nanox_erc721_transfer/00002.png \ No newline at end of file diff --git a/tests/snapshots/nanox_erc721_transfer_wo_info/00003.png b/tests/snapshots/nanox_erc721_transfer_wo_info/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b34af53fcd4c2abde410f077c7f6ee0d6d53ff3a GIT binary patch literal 457 zcmV;)0XF`LP)aH1MOvfRFde|Kx zk4HM~ZXu0%)_BH!_f^|Abk)(>WUbIS0Ty+MIfG@qEL4#p1T`OdcQM8kRvE?}<{6Ca zwAfu^t+i>+C6R;=YWZ3X1rR}zte)u}G(PPwmT z)k16fil@+F@-3*9OxfU>jA&ZB%HZG9v|CU^c2KQ*06Q+I=XEo$M`IRWWnk!!i> z*{Z z*OM;I{2 { + const current_screen = sim.getMainMenuSnapshot(); + await send_apdu(eth.transport, set_plugin); + await send_apdu(eth.transport, provide_nft_info); + await send_apdu(eth.transport, sign_first); + let sign_promise = send_apdu(eth.transport, sign_more); - const set_plugin = apdu_as_string('e01600007301010645524337323160f80121c31a0d46b5279700f9df786054aa5ee542842e0e0000000000000001000147304502202e2282d7d3ea714da283010f517af469e1d59654aaee0fc438f017aa557eaea50221008b369679381065bbe01135723a4f9adb229295017d37c4d30138b90a51cf6ab6'); - const provide_nft_info = apdu_as_string('e01400007001010752617269626c6560f80121c31a0d46b5279700f9df786054aa5ee500000000000000010001473045022025696986ef5f0ee2f72d9c6e41d7e2bf2e4f06373ab26d73ebe326c7fd4c7a6602210084f6b064d8750ae68ed5dd012296f37030390ec06ff534c5da6f0f4a4460af33'); - const sign_first = apdu_as_string('e004000096058000002c8000003c800000000000000000000000f88a0a852c3ce1ec008301f5679460f80121c31a0d46b5279700f9df786054aa5ee580b86442842e0e0000000000000000000000006cbcd73cd8e8a42844662f0a0e76d7f79afd933d000000000000000000000000c2907efcce4011c491bbeda8a0fa63ba7aab596c000000000000000000000000000000000000000000000000'); - const sign_more = apdu_as_string('e00480000b0000000000112999018080'); + await waitForAppScreen(sim, current_screen); + await sim.navigateAndCompareSnapshots('.', model.name + '_erc721_transfer', [8, -1, 0]); - const current_screen = sim.getMainMenuSnapshot(); - await send_apdu(eth.transport, set_plugin); - await send_apdu(eth.transport, provide_nft_info); - await send_apdu(eth.transport, sign_first); - let sign_promise = send_apdu(eth.transport, sign_more); - - await waitForAppScreen(sim, current_screen); - await sim.navigateAndCompareSnapshots('.', model.name + '_erc721_transfer', [8, -1, 0]); - - await sign_promise; + await sign_promise; +})); + +test('[Nano ' + model.letter + '] Transfer ERC-721 w/o NFT_PROVIDE_INFORMATION', zemu(model, async(sim, eth) => { + const current_screen = sim.getMainMenuSnapshot(); + await send_apdu(eth.transport, set_plugin); + await send_apdu(eth.transport, sign_first); + let sign_promise = send_apdu(eth.transport, sign_more); + + await waitForAppScreen(sim, current_screen); + await sim.navigateAndCompareSnapshots('.', model.name + '_erc721_transfer_wo_info', [8, -1, 0]); + + await sign_promise; +})); + +test('[Nano ' + model.letter + '] Transfer ERC-721 w/o SET_PLUGIN', zemu(model, async (sim, eth) => { + const current_screen = sim.getMainMenuSnapshot(); + await send_apdu(eth.transport, provide_nft_info); + let sign_tx = send_apdu(eth.transport, sign_first); + + await expect(sign_tx).rejects.toEqual(new TransportStatusError(0x6a80)); })); diff --git a/tests/src/test.fixture.js b/tests/src/test.fixture.js index beffd71..c29dbad 100644 --- a/tests/src/test.fixture.js +++ b/tests/src/test.fixture.js @@ -50,11 +50,11 @@ function apdu_as_string(str) { } async function send_apdu(ts, apdu) { - await ts.send(apdu.cla, - apdu.ins, - apdu.p1, - apdu.p2, - apdu.data); + return ts.send(apdu.cla, + apdu.ins, + apdu.p1, + apdu.p2, + apdu.data); } // Generates a serializedTransaction from a rawHexTransaction copy pasted from etherscan.