From 4fce1d4afdb88fb9a0f3e9b36a9b800aa87bc5ac Mon Sep 17 00:00:00 2001 From: Charles-Edouard de la Vergne Date: Wed, 3 Apr 2024 17:14:01 +0200 Subject: [PATCH] Port 'send.test' from 'zemu' to 'ragger' --- .../nanos/test_legacy_send}/00000.png | Bin .../nanos/test_legacy_send}/00001.png | Bin .../nanos/test_legacy_send}/00002.png | Bin .../nanos/test_legacy_send}/00003.png | Bin .../nanos/test_legacy_send}/00004.png | Bin .../nanos/test_legacy_send}/00005.png | Bin .../nanos/test_legacy_send}/00006.png | Bin .../nanos/test_legacy_send}/00007.png | Bin .../nanos/test_legacy_send}/00008.png | Bin .../nanos/test_legacy_send/00009.png} | Bin .../ragger/snapshots/nanosp/test_legacy_send | 1 + .../nanox/test_legacy_send}/00000.png | Bin .../nanox/test_legacy_send}/00001.png | Bin .../nanox/test_legacy_send}/00002.png | Bin .../nanox/test_legacy_send/00003.png | Bin 0 -> 434 bytes .../nanox/test_legacy_send}/00004.png | Bin .../nanox/test_legacy_send/00005.png | Bin 0 -> 381 bytes .../snapshots/stax/test_legacy_send/00000.png | Bin 0 -> 8691 bytes .../snapshots/stax/test_legacy_send/00001.png | Bin 0 -> 18715 bytes .../snapshots/stax/test_legacy_send/00002.png | Bin 0 -> 9597 bytes .../snapshots/stax/test_legacy_send/00003.png | Bin 0 -> 6108 bytes tests/ragger/test_sign.py | 75 ++++++++++++++---- .../nanos_transfer_ethereum/00009.png | Bin 340 -> 0 bytes .../nanos_transfer_ethereum/00010.png | 1 - .../nanox_transfer_ethereum/00003.png | Bin 436 -> 0 bytes .../nanox_transfer_ethereum/00005.png | Bin 365 -> 0 bytes .../nanox_transfer_ethereum/00006.png | 1 - .../nanox_transfer_ethereum/00007.png | Bin 382 -> 0 bytes tests/zemu/src/send.test.js | 38 --------- 29 files changed, 59 insertions(+), 57 deletions(-) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00000.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00001.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00002.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00003.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00004.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00005.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00006.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00007.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum => ragger/snapshots/nanos/test_legacy_send}/00008.png (100%) rename tests/{zemu/snapshots/nanos_transfer_ethereum/00011.png => ragger/snapshots/nanos/test_legacy_send/00009.png} (100%) create mode 120000 tests/ragger/snapshots/nanosp/test_legacy_send rename tests/{zemu/snapshots/nanox_transfer_ethereum => ragger/snapshots/nanox/test_legacy_send}/00000.png (100%) rename tests/{zemu/snapshots/nanox_transfer_ethereum => ragger/snapshots/nanox/test_legacy_send}/00001.png (100%) rename tests/{zemu/snapshots/nanox_transfer_ethereum => ragger/snapshots/nanox/test_legacy_send}/00002.png (100%) create mode 100644 tests/ragger/snapshots/nanox/test_legacy_send/00003.png rename tests/{zemu/snapshots/nanox_transfer_ethereum => ragger/snapshots/nanox/test_legacy_send}/00004.png (100%) create mode 100644 tests/ragger/snapshots/nanox/test_legacy_send/00005.png create mode 100644 tests/ragger/snapshots/stax/test_legacy_send/00000.png create mode 100644 tests/ragger/snapshots/stax/test_legacy_send/00001.png create mode 100644 tests/ragger/snapshots/stax/test_legacy_send/00002.png create mode 100644 tests/ragger/snapshots/stax/test_legacy_send/00003.png delete mode 100644 tests/zemu/snapshots/nanos_transfer_ethereum/00009.png delete mode 120000 tests/zemu/snapshots/nanos_transfer_ethereum/00010.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum/00003.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum/00005.png delete mode 120000 tests/zemu/snapshots/nanox_transfer_ethereum/00006.png delete mode 100644 tests/zemu/snapshots/nanox_transfer_ethereum/00007.png delete mode 100644 tests/zemu/src/send.test.js diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00000.png b/tests/ragger/snapshots/nanos/test_legacy_send/00000.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00000.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00000.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00001.png b/tests/ragger/snapshots/nanos/test_legacy_send/00001.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00001.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00001.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00002.png b/tests/ragger/snapshots/nanos/test_legacy_send/00002.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00002.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00002.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00003.png b/tests/ragger/snapshots/nanos/test_legacy_send/00003.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00003.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00003.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00004.png b/tests/ragger/snapshots/nanos/test_legacy_send/00004.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00004.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00004.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00005.png b/tests/ragger/snapshots/nanos/test_legacy_send/00005.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00005.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00005.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00006.png b/tests/ragger/snapshots/nanos/test_legacy_send/00006.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00006.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00006.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00007.png b/tests/ragger/snapshots/nanos/test_legacy_send/00007.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00007.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00007.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00008.png b/tests/ragger/snapshots/nanos/test_legacy_send/00008.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00008.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00008.png diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00011.png b/tests/ragger/snapshots/nanos/test_legacy_send/00009.png similarity index 100% rename from tests/zemu/snapshots/nanos_transfer_ethereum/00011.png rename to tests/ragger/snapshots/nanos/test_legacy_send/00009.png diff --git a/tests/ragger/snapshots/nanosp/test_legacy_send b/tests/ragger/snapshots/nanosp/test_legacy_send new file mode 120000 index 0000000..bcf0aae --- /dev/null +++ b/tests/ragger/snapshots/nanosp/test_legacy_send @@ -0,0 +1 @@ +../nanox/test_legacy_send \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00000.png b/tests/ragger/snapshots/nanox/test_legacy_send/00000.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_ethereum/00000.png rename to tests/ragger/snapshots/nanox/test_legacy_send/00000.png diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00001.png b/tests/ragger/snapshots/nanox/test_legacy_send/00001.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_ethereum/00001.png rename to tests/ragger/snapshots/nanox/test_legacy_send/00001.png diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00002.png b/tests/ragger/snapshots/nanox/test_legacy_send/00002.png similarity index 100% rename from tests/zemu/snapshots/nanox_transfer_ethereum/00002.png rename to tests/ragger/snapshots/nanox/test_legacy_send/00002.png diff --git a/tests/ragger/snapshots/nanox/test_legacy_send/00003.png b/tests/ragger/snapshots/nanox/test_legacy_send/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..1bcb78761fd15fd94377813eb932cf0245af596a GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Dba4!+nDh2VbkSi29*4kN zC;e{xpLE09-X@L1U)6Pz@cqwE59$gurmhhHYGNq1|K_}GN?*6c;}uWe+Wo)TzqkE6 zOWCglJJRQIPYCKV44Z9klmA?K*;8eu`j}gF&*pmny7TUOg-vG#S9-~<9VNyDU;XaOUjRnu`wU6rmV;;(%8h-cKt95^+cIY}x^|>`ynr&iL>69AV zQ?XZH9Ls(%r|F4eU1s7g$2l(7wEwqoFI!-AH6`DME7ab-W_RyC{Y0P#t1qo>JIAe` zn*8U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/test_legacy_send/00000.png b/tests/ragger/snapshots/stax/test_legacy_send/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f992e718a17c0a7952eb569a7d3a3ac7662fe27e GIT binary patch literal 8691 zcmeHti#yZ*`@ck~94bNxounF3&Zl)!sqpsJn2=LQ%pqnD*+M8{MUhk9QH14~ISg}N z42xlynL`XShZcryzOO#N>-zl%zu)(JeXsX+J+EtfzV>?Ve%`z9$9+E@&%ON1;-=Vs zx%~nH0%B&juKz6{u>sRiDWU*+h^xWIj7?<_%MWNy2 z8pnV9=jkjW8x^a3+*#ys)N|$Iw?uf{8gyZG?1e+~*tEcGeArvGpoFw8P-F}o>J+}i#=<&5n3$#(1C|-vht9BeFGF87wa^q%A0I&=MpB8wBA_wYJHv=q5d=XY>7`0cX#;v30lMrwX%d+6 zP9EM-@54Ll6-YKH*>Cecj3c_Qq#UfSm3z(n@=N|1Ik8zYd+BSB zhjr?VL3=whH#SBdL-VZO@fAPnnCdW8_frg2^RlT$%+#tTO&Lc;EunkqXd~xa&XX#F z2Xqz0?t+Qf>PnO3Lh zrWTNktfF`vd453YXKl@HlcZ_#e2|{P5J>fbTx5(qH)&l%6u4J9m!5MZ^t|7nI~q+Z4nhT-)gFw#M}g6TeZ90 zkX8>8zY&M_unRWHnbun`zDM?YcdB#d$p|ZWDJ55RoK7z;$|W2NJP3V%+AJ9hD=wfBQGl3-e?Dfxxl3qb}z zV3pq#MBuXN$ZyqMHH5I_QLIS4%bO%u=lwSp-hRTFXnFc6q>$@NMf`tL=?bJe=4PYIulb4+gXYG^`h>x)`xFe>ToSnbg0>;3p25L9Yh+Z3~ z#)bFA#o!WY1I5fb)%`M-Lyp>o#MzojyU@yIWn)oPZ5%DBLs|M{S($@uEdNrsE^tZW zMA^#gQ)V7IqOBUAnEU^{{i2Unzm)VRE6buX#jcGLo=br_E_xf%R7i9dNcIE+)^TF%wA)B*FIezG^L+Vu8d5}I1NFgEU`;izD{ zmB%6WyN5jU%)CTh;lNV5#$CIhuT+i;92JuOA2^0=y{K3i)iX`-qMq~Y>wOq3j2QrC zrH%Vm@9;M0s2yH4%{RwUT4dr`dNGJ-DIC{2Ig9<|6=sr?c91`ii;ZOgj?o;G>q;;x0-_mytBv5+2B34@^X<9Wt zBY$7iKPAla&QYwfB0AVlQ?yktiL7-DlTmrQ)-DyS;4t(>fy6U9$3w*ue58CKemY1DleMe3ECWN93f({CKWvnmv)?D-S@p2>AxPJ1gbJeT>WvX62 zD8$SBr4-UW|f1zKi!9ktBk32HmI;jzS`>x-2-)g20W%%4vw`M8R zzTsH9{Z-FJ#+~FgCknSAjQ#8=wXRo=GMWw^a*~2lnDE6X52y5&p0{UJ(#)N2-YAge zxw&4^9K*)B=vh5e7Wrkg{FHevBAUJRIYYG{>I~OuqYsx`kJ7s>j&cKiFsX-LWqFWs zTC!W4(r0rL;yrl3FLt{O))FkXIEW$4I3s>CDXv%D(WZq2 zETWCy@48ezn1fQ($UZ8w z+^w_(7c9Oc)fjk!hIv%u?aYu}L%-x#Jz5kvX2_S8X^j}y=Zp!`b}gi}fn)aAQV_Pz z=C3*%AC$V=iCawcruLrWo|bs9PADRg8RIigjyjA+9kv*t8)p94jF8zo)T6!CcL{o^ z5#h=APmVmYCWKnJSIRAUULM%(7YuKd^FCtH);zJgaZ7U#Wk&iDEQOCnw~syFjMRqe zrniC#d(xh=F^a@D?WP&lS9c1I8hT^kbo6)kNbSHxU%4HQL;WR`UZ;!LlKAg`_<8z# z^O^Ec9-$yJfAyLMDNsJfK`MqW6u42~H?D`Om*t;ZsKds;!xenUFU)LG`n~MCLIO=X zF3F{N=jmqT7cxg#)tYV*-2n@nyyh*{?M}lZ;5P>-H<*L7Ca{R#GF+^2&Sgz}IQf*$3OZ zwL1cQti^rX6O7YU_4|2GO`MFDrpQ`7=fIX{&T?%EaH_T7MV*o9^9^>dkjJ`=Exp?V zd3HLHnV_U;KaMnhGUB6?ZOA(oO*(FI0lXr2tOPPA=}62 zG-CcGG|QiEYQL z2X1rR2r;;xr{!G(%AHLMWsmWvUmU|^ThqV;so4$cWe&wZgl$mH&F}XnxS*GZy@HJt zX)X&JQB?ceNrdT1e@?$RX5Z4s*UBQnI2xB%8Lt{YCYPDN$>I2K`l8z|sDD)2oBg2o z!jw{nq<4^Zo05Ft`DCBN>zfUWJcP~`xSoE-*hw~4U4~mQxb)b>=z*y1o(<&Z36fC- zo_5W%dHKD4SxGxLgXk>%)Sh@cK9{|@7}asa$8I0byBmstLm=BcB%WT{pJVKq7%W_c zH?^-oguZF|l@qX5n$xlDAr~$TgFyWJ{4#qy78O(FPy8hnV;JUZGG6YhIkq?iQTYA% z@luZOCf%VSV|v!H1qan$V6j+~Qm1H1&=)|>r#TTXcyZ;1hftK{y@bFmL)h#byZ!X4|&&9>M%y4+`F0#^HhOLAl zwb93u|Fl#RnuFpavu{F8!uPtSx~~h3ac>qISX;d6$O_R~Y<3OuSkCdw4sM3-BXAg~ zm2L4tr}vqjEsPwJo2Q*ks=Hk(j@D~T(Sg>tGv4EwQ+ng9V64FoyB9>f&C&nO1_F&) zxdE<6lv*fgWZ&@4$RAoBnm^0}2-^|VmVd2-fs^sySGPB}@NZ7jpi(9kwk*>F(ca%mJ=7V( zT!2+L_1SKm2^VSIGT)nXgIgT0IlH<&vyL|#{l2|?RNR9!G)!Ob=$oHcI{Oj4%*|PT z(@^J=So-sV7)T)g!B;bpiI_uBfrkhG9sl~^e_0H0w-*KL-vR{@%j)Uu*Ai=8k?&$t ziU5ihuPh=S*IG%80;sy7A==D=8q8mz}m{j#9sXh?rQ@`wg;! z-sah1+@Am@7~78)FHlpji-uEm(%x#1QyAVSDRkT3K5E2duVDk0B0cv zZ(6-&)S`aqnpe_%zfM-tmsxEZ0Sa`?Z78l&ZDD#k59~(8Zu7>$J9(z)#= z8pMj;#lRs~dHL9nFbp^#`BX`XL4%d=@e*>xtm|F|97}~!v2m>*Q=->TZpi~WK*HJ) z{y|aikbEA}kJf4>)gGWg2#}2pZh2+ym+h((a8L;Dh&Eq*?lOlc8L7{1#Il0DAx0Z8 zveq__A7V5+!KKn&gCrG}v1>cU#_FN!?yW z<*(K-K-zMUNTZA4M|>7@Y4e*Ex37F)l$f}BhLg2;FC%Q+19@bg+z1k1{o^;T1dTs! zc9GUm9(L0+_)c-Is)O-NNflJG21M)?1hj{wmP~o=xmnj`clp7>5@}N_$U8g>dO#af z@G^JKU+-t=c&*o?P%XU==gkh|*B+XqClJe>7j>jsM{n~PC7(U2sVW}TQghuO7`1~4 zkf#jhbIO%!aV1>xFyFB~nHo{N`$NN4Q z+-Q*>|DX6ITyJN)_hx6~4q+?v5Y*Bd@~-Oa6n)IRc-}X!^oLfD^K?+yPpcI}@5V4S zuwC*g%g`SS%h#Qa6F);d5B_*wZt%i!QU<)_c0d86G8{+NpSl_x);1LFy?NZAZ?Owx z#i3j-*iKm^v0r`|<@+B;r1-9CnBJ*tRxKYizYyxW4rIiL57)@CK6Ux$)_}q40DeZd z+^S^j6&$c;dO?LB2Z5Li*)Z(oBad{4-|)mFxw##K34Gew?B08v2J7lw^wp}(-jOJo z8BYv*tv1w=HgYC9`VOzWl+Q3HE1+-6Csz43Urt%^ssK@abl{GDI`Rleb%1fS=Rc4< zpR7;WR!fsr`kuI+K`e_vxG5WpB;EPI(Bb2(lby$laltr8&*1QT8k|e9iVnmE`L!2X z<_WovsKJ#ZHCH46KDYF`CUIfs#g&6?0o=EgC-pjyp_XobQf2I(8#-F%DW^KytbAL? zU@z)FLlg*XCz(nrYs_qhGT>uWF!;>D%*W_w78?)7RsGGovWYJJvy10&(AIQiN1Yrj z4}cQgu2{-y-HXx{OS{yu>5!6quQ4kVoyZ-%rHX3pAb@#!{+1jcD(h~$q2^(1cS*)u zel4u@7T4<0VH2kvF%(%P7si*9d8$q5j*4hM%R538ZS_ZfO17py`@a%RYAkM4rKvbq z;?A>%7qcUu1wNqV{y#}KJA1D98!6^EiVD=Q=*lAfS`opT0uwqJ&;L974N@OKA}Azv z;iVz08hA{S2UH2J1B|MOCh!?9vK;{mrhQYVWlYOQe4>;*t#dmZfKjkm0wg%nyvt)wc9`->jYb;VnBV$P!Wkzjc?I#2$-ViV9$>Uck`k+ zzV3EN*YBH88*4Xu8SIMF_Wj4i;|3F0MD|!$I%Bg=5|1r+45)QzWW=?~K89ACS^>(y zq93zmczGjOn9t$VIH+%^Ya~qz2TsoCs!qj)s|$Kd;kn0O|LAA^;pXZdrN&LsDBgFL>VE8b3ARL8|b<{EW8y zfj&;2KbZ9;h-0rA$SPi}ZdUSjEjLRRU1Fq%3jk&L%gZJ}bcx=Zey3c^oWx+yJXy6A zKeX}bKZOgHuHyX`T2QR$O3e~_-@KDJS{Bz0$O zu-)OGZDOs1dNgra1}HA@{ppNa!$&e0-kU$3f=e@(`Z@A&iei(p0nN`lV;0~@N4Z`2 z>$q}#e%v2S0&1@#MKZ5smc)z|gl8NX+^L zUJE)dtH1iLIQL8?%@-9daw=25Pqd-4N^}|Un>(c1L;TfMO^zt}B!&reCaqXXEE+g4 zVg&cXD|;p5;PA@gf-NqI4CHrMP0+;p zaH^}5OXUdk!E>N}^Wsv0NAwy<{((IOAkT0|+`Wpfx3qiN_;q04fzsQ7>S`CBHPxZD zA&auWSq2hO2-gw5;>=3JNgJXbAYupLwDbzq{kGq6Lwu36lah!HrOA!IkD+gRU&O7Z zvMGGiZJ29$i4R~|NJBTx0q+MKmcZ!8mWBc+0sUi}!x{Fib|YqiOTFWQ^S>446bC$& z*Hs?_t0|%O5`%GoZ#iqsH1N`xUo@5Rf7bIUFJUT+MDertg9v4@nv&CHV^sr*IvT#E zb>;U8$el{g?kQs8uJ84i8TG5zvyTX0dCl1TeG=y;i59D!TilO&nCe8ClK{l z@C9ry>Gem1P0csSDaiSjiZT~-a26Einn7Q(oB~z5VI8tgy?>In57YkWu=*qd!#Vi~ zlT(A*&>*qdn?}a{p8Wa%g&Y#2*>lREbhl`0nf3Jh8aFtlEvcca#HoI-p)W>**YGBP ze&$I)OuaYD=^NdrJeqWPtMz7iJgTcg0cVW9dDrL#ik+CpR+`G$3=^PGE_sIhbd*Hg z{&nPn;`>V7CC6>s#p=z3cGt1f+;ftiy*(R{UNFORJgJ_^wF|C@pvflahr2byM)Xr? zxbw)C%PEu_DJ!_m-N$NCLSr#aTfY32tYrla;d%iajMk4%kB1eBhbB`BR2 kD|~rROUO-4dX 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/test_legacy_send/00002.png b/tests/ragger/snapshots/stax/test_legacy_send/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1ca9382cfe2a299a5bfb35c76039d7a8ff0893 GIT binary patch literal 9597 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 H_TWDNq$iJk literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/test_legacy_send/00003.png b/tests/ragger/snapshots/stax/test_legacy_send/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..a21279c8a0a89933b09833df3871d1ab2b36adf5 GIT binary patch literal 6108 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 2^87 Eth on Ethereum app should fail +def test_legacy_send_error(backend: BackendInterface): + tx_params: dict = { + "nonce": 38, + "gasPrice": 56775612312210000000001234554332, + "gas": GAS_LIMIT, + "to": ADDR3, + "value": 12345678912345678912345678000000000000000000, + "chainId": CHAIN_ID + } + common_fail(backend, tx_params, StatusWord.EXCEPTION_OVERFLOW, path=BIP32_PATH2) + + + def test_1559(firmware: Firmware, backend: BackendInterface, navigator: Navigator): tx_params: dict = { "nonce": NONCE, @@ -124,7 +173,7 @@ def test_sign_simple(firmware: Firmware, test_name: str): tx_params: dict = { "nonce": NONCE2, - "gasPrice": Web3.to_wei(13, 'gwei'), + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), "gas": GAS_LIMIT, "to": ADDR2, "value": 0x6f9c9e7bf61818, @@ -180,7 +229,7 @@ def test_sign_nonce_display(firmware: Firmware, tx_params: dict = { "nonce": NONCE2, - "gasPrice": Web3.to_wei(13, 'gwei'), + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), "gas": GAS_LIMIT, "to": ADDR2, "value": 0x6f9c9e7bf61818, @@ -222,7 +271,7 @@ def test_sign_blind_simple(firmware: Firmware, data = "ok" tx_params: dict = { "nonce": NONCE2, - "gasPrice": Web3.to_wei(13, 'gwei'), + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), "gas": GAS_LIMIT, "to": ADDR2, "value": 0x6f9c9e7bf61818, @@ -267,7 +316,7 @@ def test_sign_blind_and_nonce_display(firmware: Firmware, data = "That's a little message :)" tx_params: dict = { "nonce": 1844674, - "gasPrice": Web3.to_wei(13, 'gwei'), + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), "gas": GAS_LIMIT, "to": ADDR2, "value": 0x6f9c9e7bf61818, @@ -283,7 +332,7 @@ def test_sign_reject(firmware: Firmware, test_name: str): tx_params: dict = { "nonce": NONCE2, - "gasPrice": Web3.to_wei(13, 'gwei'), + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), "gas": GAS_LIMIT, "to": ADDR2, "value": 0x6f9c9e7bf61818, @@ -305,7 +354,7 @@ def test_sign_error_transaction_type(backend: BackendInterface): app_client = EthAppClient(backend) try: - with app_client.sign("m/44'/60'/1'/0/0", tx_params): + with app_client.sign(BIP32_PATH2, tx_params): pass except TypeError: @@ -318,7 +367,7 @@ def test_sign_blind_error_disabled(backend: BackendInterface): data = "ok" tx_params: dict = { "nonce": NONCE2, - "gasPrice": Web3.to_wei(13, 'gwei'), + "gasPrice": Web3.to_wei(GAS_PRICE, 'gwei'), "gas": GAS_LIMIT, "to": ADDR2, "value": 0x6f9c9e7bf61818, @@ -326,12 +375,4 @@ def test_sign_blind_error_disabled(backend: BackendInterface): "data": data.encode('utf-8').hex() } - app_client = EthAppClient(backend) - try: - with app_client.sign("m/44'/60'/1'/0/0", tx_params): - pass - - except ExceptionRAPDU as e: - assert e.status == StatusWord.INVALID_DATA - else: - assert False # An exception should have been raised + common_fail(backend, tx_params, StatusWord.INVALID_DATA, BIP32_PATH2) diff --git a/tests/zemu/snapshots/nanos_transfer_ethereum/00009.png b/tests/zemu/snapshots/nanos_transfer_ethereum/00009.png deleted file mode 100644 index 9c7e7049cb3e9bcfb1601ec510ee465d38229d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmV-a0jvIrP)b=%MgRq*37h4eRxPbkJCLY|1VIo49_}P}TKpH4$L<8?X{t;p zy+UQc_4@p%0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&GII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=m zSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*Uj-J(h>P7(Y#?ZWvi?6}@n{fGLp>YTp myqR(V_$?>^<%seR_VWh!#&b2QSTI5qI}IeE+uQ$d($HH~rmjmfzpG^!&>@vHo;H|A#$&J>60(rv&w- z{Y$*re=CCT)rWkxbu*ft7z>`O-oI7u=d4xjo3yuXwAx+AyG_?&s?U?T(oz$vN~hG^ zITd^LMfdfDVy;c?KbE!zHs9!cv+j?u-i)SGA(L0?zp6X2s;;m5>ao50i9jz_e_Gr2 zjaxr8`Rh@Y?ag!bLo2gxTv~bJ)XKV#_qKdJdgcDJ@>9jrf~PT`jyPOzcvQ5zaQmZw zsyQ_iV&5BC&*W(?<|>M3c>Lz-s+s2Awug&us=u4vloD}$y3^rY@dWQRp`~22>^5u8 z-Wjt=zq~iKakEWo=0=}0$4N$E@I8h8IZK)78&qol`;+03*-H(EtDd diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00005.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00005.png deleted file mode 100644 index c9222461cdd3ea49c300c4820e3704d33b9a3838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-yba4!+nDh2lG+&c}NXx^; zh3aqWJ=68=OcXt$gFHOaKm4C(5*Bp+iMjqtrV%Nn6esuj!jIMi}Btw`sohxwi1&U@}K{{10Q-!s%eVxF#kF6*2U FngGM>p?d%T diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00006.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00006.png deleted file mode 120000 index 917964c..0000000 --- a/tests/zemu/snapshots/nanox_transfer_ethereum/00006.png +++ /dev/null @@ -1 +0,0 @@ -00004.png \ No newline at end of file diff --git a/tests/zemu/snapshots/nanox_transfer_ethereum/00007.png b/tests/zemu/snapshots/nanox_transfer_ethereum/00007.png deleted file mode 100644 index a58590b988714545e7960f7f400f360ffc5de41f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9hba4!+nDh2#bl+hG9*4k? zQuR0Wo;SViCn%lTo!KM1sAjk5Y(@*V#~rbuHu`7A_H&AxgwHf8y4cdKvg$JbB4n%ez%sZ31aBYd&Oo@(7)_WJ(Znl2o8^PD` zFE`_Y-IS+Kdq0Q2-7r_C=}F(5ev`U`H~)QH|9$1FHE$YjoVax+e0xei%S`SAGlOm! zp7{T3NA-mVOYb&rdU8MdyIHo@@7cE*uj@I+Zu{2i)KMSV-E~o { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'EB44850306DC4200825208945A321744667052AFFA8386ED49E00EF223CBFFC3876F9C9E7BF6181880018080', - ); - - await waitForAppScreen(sim); - let clicks; - if (model.letter === 'S') clicks = 9; - else clicks = 5; - await sim.navigateAndCompareSnapshots('.', model.name + '_transfer_ethereum', [clicks, -1, 0]); - - await expect(tx).resolves.toEqual({ - "r": "6f389d15320f0501383526ed03de917c14212716f09a262dbc98431086a5db49", - "s": "0dc994b7b97230bb35fdf6fec2f4d8ff4cfb8bfeb2a652c364c738ff033c05dd", - "v": "26", - }); - })); -}); - -nano_models.forEach(function(model) { - test('[Nano ' + model.letter + '] Transfer amount >= 2^87 Eth on Ethereum app should fail', zemu(model, async (sim, eth) => { - - const tx = eth.signTransaction( - "44'/60'/1'/0/0", - 'f83f268e02cc9be5c53ea44bd43c289dcddc82520894dac17f958d2ee523a2206206994597c13d831ec7928db8b0861b8f7fe5df83cd553a829878000080018080', - ); - - await expect(tx).rejects.toEqual(new TransportStatusError(0x6807)); - })); -});