From 7d61358378cbc70d87bac6e40b746759d4c4e0f1 Mon Sep 17 00:00:00 2001 From: Tomas Martykan Date: Tue, 20 Aug 2024 18:06:43 +0200 Subject: [PATCH] fix(connect): skip tests for unsupported coins on new devices --- .../e2e/__fixtures__/signTransactionBgold.ts | 13 +++++++++++++ .../connect/e2e/__fixtures__/signTransactionDash.ts | 11 +++++++++++ .../e2e/__fixtures__/signTransactionDecred.ts | 3 ++- packages/connect/e2e/common.setup.js | 5 +++++ scripts/ci/connect-test-matrix-generator.js | 6 +++++- 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/connect/e2e/__fixtures__/signTransactionBgold.ts b/packages/connect/e2e/__fixtures__/signTransactionBgold.ts index 86c434cf2f4..dd80b49df78 100644 --- a/packages/connect/e2e/__fixtures__/signTransactionBgold.ts +++ b/packages/connect/e2e/__fixtures__/signTransactionBgold.ts @@ -1,5 +1,13 @@ const { ADDRESS_N, TX_CACHE } = global.TestUtils; +const legacyResults = [ + { + // not allowed for newer devices + rules: ['!T2B1', '!T3B1', '!T3T1'], + success: false, + }, +]; + export default { method: 'signTransaction', setup: { @@ -41,6 +49,7 @@ export default { serializedTx: '0100000001ec007b04d78df3e1407f162623f9353525e50c21402efc2a3139c6baf898036f000000006a473044022009721c9ca2c3d17e2df61c3940f2934b4fb42a7f68dbdbbbb0900f85d13ad2800220710bcdca9a562d436547a51b018c7d97f0ae918c0df4fc423cb02e05b224fda24121023bd0ec4022d12d0106c5b7308a25572953ba1951f576f691354a7b147ee0cc1fffffffff0272ee1c00000000001976a9141c82b9c11f193ad82413caadc0955730572b50ae88ac7ce6884a000000001976a914ea5f904d195079a350b534db4446433b3cec222e88ac00000000', }, + legacyResults, }, { description: 'Bgold: 2 inputs, 1 output, no change', @@ -77,6 +86,7 @@ export default { serializedTx: '0100000002ec007b04d78df3e1407f162623f9353525e50c21402efc2a3139c6baf898036f000000006b483045022100dda4e32fb43cd2217e48df892b38c98acc5a4815c11ff232e327c0cb0f133d3d022041351c3f929a6011d442c500c45348f977cacb234a2999ca3b3b9922c0830fd44121023bd0ec4022d12d0106c5b7308a25572953ba1951f576f691354a7b147ee0cc1fffffffff068e3f720fbf315b1b15b37cffb4e41c8ed31422bc5b7e51359cc1c18d0fe5aa000000006a473044022024db731f390b48b8e346c2d519eea569042b6db7d15a1f0159e682eed3ff94a10220531c0673845e7cce81dd37953b70e4eceee0dcb5d0ab4d8b9a7de4d7e83ed727412102d54a7e5733b1635e5e9442943f48179b1700206b2d1925250ba10f1c86878be8ffffffff01cd55bf4b000000001976a914ea5f904d195079a350b534db4446433b3cec222e88ac00000000', }, + legacyResults, }, { description: 'Bgold (P2SH): 1 input, 2 outputs, no change', @@ -110,6 +120,7 @@ export default { serializedTx: '010000000001010e1da257e29689e0b9c4a84ebe970aea373f9edeb3156199102c3558c33972db0000000017160014b5355d001e720d8f4513da00ff2bba4dcf9d39fcffffffff02e0aebb00000000001976a914ea5f904d195079a350b534db4446433b3cec222e88acfefee949000000001976a914a8f757819ec6779409f45788f7b4a0e8f51ec50488ac024730440220297dd984a414b5105911b6b171f92a889a732f5fb0ee7c8804d5187edb76808a02201c97b6b5cdeb8ba483c6bb5085f1cceed2dbe61faa09db57e9116abc88184653412102ecea08b559fc5abd009acf77cfae13fa8a3b1933e3e031956c65c12cec8ca3e300000000', }, + legacyResults, }, { description: 'Bgold (P2SH): 1 input, 1output, 1 change', @@ -143,6 +154,7 @@ export default { serializedTx: '010000000001010e1da257e29689e0b9c4a84ebe970aea373f9edeb3156199102c3558c33972db0000000017160014b5355d001e720d8f4513da00ff2bba4dcf9d39fcffffffff02e0aebb00000000001976a914ea5f904d195079a350b534db4446433b3cec222e88acfefee9490000000017a9140cd03822b799a452c106d1b3771844a067b17f118702463043021f718c7fcc27516eddb647f6cbafe310d98ccd1e43fe0d3ca2ee944e16b9dab90220359abfc5b144e7b7e54bfbfc2ce5962f5ad2e70985e77b34fb7bc104fefbe795412102ecea08b559fc5abd009acf77cfae13fa8a3b1933e3e031956c65c12cec8ca3e300000000', }, + legacyResults, }, { description: 'Bgold (P2SH): spend multisig input', @@ -192,6 +204,7 @@ export default { serializedTx: '01000000000101396b200511956435276b170033b9ddb5b36e7ef4dc8bc538e0235a8dfe6b1f7f0000000023220020ea9ec48498c451286c2ebaf9e19255e2873b0fb517d67b2f2005298c7e437829ffffffff01eed4a54a000000001976a914ea5f904d195079a350b534db4446433b3cec222e88ac030047304402207aae5d1f29a6e7a816bfa5c4fcce451f9a03727028a298daa98e9893ee9eec1702206ad96571ec48f99e4529257091274503585f690efa4095e554db9fcec0fa147b4169522103279aea0b253b144d1b2bb8532280001a996dcddd04f86e5e13df1355032cbc1321032c6465c956c0879663fa8be974c912d229c179a5cdedeb29611a1bec1f951eb22103494480a4b72101cbd2eadac8e18c7a3a7589a7f576bf46b8971c38c51e5eceeb53ae00000000', }, + legacyResults, }, ], }; diff --git a/packages/connect/e2e/__fixtures__/signTransactionDash.ts b/packages/connect/e2e/__fixtures__/signTransactionDash.ts index e8fb279f50b..96edf84b909 100644 --- a/packages/connect/e2e/__fixtures__/signTransactionDash.ts +++ b/packages/connect/e2e/__fixtures__/signTransactionDash.ts @@ -2,6 +2,14 @@ const { ADDRESS_N, TX_CACHE } = global.TestUtils; // vectors from https://github.com/trezor/trezor-firmware/blob/main/tests/device_tests/test_msg_signtx_dash.py +const legacyResults = [ + { + // not allowed for newer devices + rules: ['!T2B1', '!T3B1', '!T3T1'], + success: false, + }, +]; + export default { method: 'signTransaction', setup: { @@ -35,6 +43,7 @@ export default { serializedTx: '010000000165c66bfaa900e2e62891e18385d23ee28db9dda1a3ef432d5df842fb92295224010000006a473044022061db2e7970f5cc6a8bbd1547103f28558e36177862e8fc13ea5b69dd199b52560220277451bb5ce650a95e5f67019ca0ddaa1fef221310c52bd1919e54a5caae5b4b012102936f80cac2ba719ddb238646eb6b78a170a55a52a9b9f08c43523a4a6bd5c896ffffffff01ac3a0f00000000001976a9147e6191bd0404cb41ed67e041bd674e2a5c9d280188ac00000000', }, + legacyResults, }, { description: 'Dash: dip2 input', @@ -67,6 +76,7 @@ export default { serializedTx: '01000000018abb1ba63185d1f0793bfce13c28c891672ec416e18498810ad64b871c5a5715010000006b483045022100f0442b6d9c7533cd6f74afa993b280ed9475276d69df4dac631bc3b5591ba71b022051daf125372c1c477681bbd804a6445d8ff6840901854fb0b485b1c6c7866c44012102936f80cac2ba719ddb238646eb6b78a170a55a52a9b9f08c43523a4a6bd5c896ffffffff0200286bee000000001976a914fd61dd017dad1f505c0511142cc9ac51ef3a5beb88acc095a905000000001976a914aa7a6a1f43dfc34d17e562ce1845b804b73fc31e88ac00000000', }, + legacyResults, }, { // NOTE: this is not a valid transaction @@ -97,6 +107,7 @@ export default { serializedTx: '0100000001edf62772fb3d103f25d49b71cf7bcd9659bde5a80cc353d36e9dc98fcd3bb4ad000000006b483045022100f7f940f5e3ca4cbe5d787d2dfb121dc56cd224da647b17a170e5e03b29e68744022002cc9d9d6b203180d1f68e64ba8a73fd9e983cca193b7bcf94e0156ed245bdfa012102936f80cac2ba719ddb238646eb6b78a170a55a52a9b9f08c43523a4a6bd5c896ffffffff01c037f409000000001976a9146a341485a9444b35dc9cb90d24e7483de7d37e0088ac00000000', }, + legacyResults, }, ], }; diff --git a/packages/connect/e2e/__fixtures__/signTransactionDecred.ts b/packages/connect/e2e/__fixtures__/signTransactionDecred.ts index 30f9dac416f..9601031cc3b 100644 --- a/packages/connect/e2e/__fixtures__/signTransactionDecred.ts +++ b/packages/connect/e2e/__fixtures__/signTransactionDecred.ts @@ -3,7 +3,8 @@ const { ADDRESS_N, TX_CACHE } = global.TestUtils; const legacyResults = [ { // not allowed for lower versions - rules: ['<1.10.1', '<2.4.0'], + // not allowed for newer devices + rules: ['<1.10.1', '<2.4.0', '!T2B1', '!T3B1', '!T3T1'], success: false, }, ]; diff --git a/packages/connect/e2e/common.setup.js b/packages/connect/e2e/common.setup.js index 5334d42c57c..f6a4ad53538 100644 --- a/packages/connect/e2e/common.setup.js +++ b/packages/connect/e2e/common.setup.js @@ -13,6 +13,7 @@ const MNEMONICS = { const emulatorStartOpts = process.env.emulatorStartOpts || global.emulatorStartOpts; const firmware = emulatorStartOpts.version; +const deviceModel = emulatorStartOpts.model; const getController = name => { TrezorUserEnvLink.on('disconnect', () => { @@ -124,10 +125,14 @@ const initTrezorConnect = async (TrezorUserEnvLink, options) => { // "<1.9.3" - skip for FW lower than 1.9.3 // "1.9.3" - skip for FW exact with 1.9.3 // "1.9.3-1.9.6" - skip for FW gte 1.9.3 && lte 1.9.6 +// "!T3T1" - skip for specific device model const skipTest = rules => { if (!rules || !Array.isArray(rules)) return; const fwModel = firmware.substring(0, 1); const fwMaster = firmware.includes('-main'); + const deviceRule = rules.find(skip => skip === '!' + deviceModel); + if (deviceRule) return deviceRule; + const rule = rules .filter(skip => skip.substring(0, 1) === fwModel || skip.substring(1, 2) === fwModel) // filter rules only for current model .find(skip => { diff --git a/scripts/ci/connect-test-matrix-generator.js b/scripts/ci/connect-test-matrix-generator.js index df66c5a55bb..591e38ebdca 100644 --- a/scripts/ci/connect-test-matrix-generator.js +++ b/scripts/ci/connect-test-matrix-generator.js @@ -88,7 +88,11 @@ const otherDevices = { firmwares: ['2-latest'], models: ['R', 'T3T1'], tests: [ - ...Object.values(groups).filter(g => g.name !== 'management' && g.name !== 'btc-others'), + ...Object.values(groups).filter( + // management, btc-others are specified below + // nem, eos are not supported anymore + g => ['management', 'btc-others', 'nem', 'eos'].includes(g.name) === false, + ), { ...groups.management, methods: groups.management.methods