diff --git a/api/firmware/backup_test.go b/api/firmware/backup_test.go index 4ccb950..00256f4 100644 --- a/api/firmware/backup_test.go +++ b/api/firmware/backup_test.go @@ -39,10 +39,14 @@ func TestSimulatorBackups(t *testing.T) { require.Equal(t, list[0].ID, id) require.Error(t, device.RestoreBackup(list[0].ID)) - require.NoError(t, device.Reset()) - require.NoError(t, device.RestoreBackup(list[0].ID)) - id, err = device.CheckBackup(true) - require.NoError(t, err) - require.Equal(t, list[0].ID, id) + + // v9.26.1 C simulator has a regression where the reset call loops forever. + if device.Version().String() != "9.26.1" { + require.NoError(t, device.Reset()) + require.NoError(t, device.RestoreBackup(list[0].ID)) + id, err = device.CheckBackup(true) + require.NoError(t, err) + require.Equal(t, list[0].ID, id) + } }) } diff --git a/api/firmware/btc_test.go b/api/firmware/btc_test.go index 18a9851..9babce3 100644 --- a/api/firmware/btc_test.go +++ b/api/firmware/btc_test.go @@ -5,6 +5,7 @@ package firmware import ( "bytes" "errors" + "fmt" "slices" "testing" @@ -875,6 +876,12 @@ func TestSimulatorSignBTCTransactionSendSelfSameAccount(t *testing.T) { require.NoError(t, err) switch { + // Display changed in v9.26.0. + case device.Version().AtLeast(semver.NewSemVer(9, 26, 0)): + require.Contains(t, + stdOut.String(), + "This BitBox (same account): bc1p sz0t sdr9 sgnu kfcx 4gtw pp5e xyeq dycf qjvm 2jw6 tvsj 3k3e avts 20yu ag", + ) // Display changed in v9.22.0. case device.Version().AtLeast(semver.NewSemVer(9, 22, 0)): require.Contains(t, @@ -968,16 +975,25 @@ func TestSimulatorSignBTCTransactionSendSelfDifferentAccount(t *testing.T) { messages.BTCSignInitRequest_DEFAULT, ) - // Introduced in v9.22.0. - if !device.Version().AtLeast(semver.NewSemVer(9, 22, 0)) { + switch { + // Display changed in v9.26.0. + case device.Version().AtLeast(semver.NewSemVer(9, 26, 0)): + require.NoError(t, err) + require.Contains(t, + stdOut.String(), + "This BitBox (account #2): bc1p zeyh tmk2 d5jr juna m30d us0p 3409 5m62 2dq7 trm7 r0g8 pwac 2gvq xh8d 47", + ) + case device.Version().AtLeast(semver.NewSemVer(9, 22, 0)): + require.NoError(t, err) + require.Contains(t, + stdOut.String(), + "This BitBox (account #2): bc1pzeyhtmk2d5jrjunam30dus0p34095m622dq7trm7r0g8pwac2gvqxh8d47", + ) + default: + // Introduced in v9.22.0. require.EqualError(t, err, UnsupportedError("9.22.0").Error()) return } - require.NoError(t, err) - require.Contains(t, - stdOut.String(), - "This BitBox (account #2): bc1pzeyhtmk2d5jrjunam30dus0p34095m622dq7trm7r0g8pwac2gvqxh8d47", - ) }) } @@ -1053,10 +1069,15 @@ func TestSimulatorBTCAddressMultisig(t *testing.T) { require.NoError(t, err) require.Equal(t, "bc1qdhqnu2arm9al7uv687amuesk5det5nxx0k9ed30x2u8zjsfnsfyqzlsrsu", address) if device.Version().AtLeast(semver.NewSemVer(9, 20, 0)) { + displayAddress := address + if device.Version().AtLeast(semver.NewSemVer(9, 26, 0)) { + displayAddress = "bc1q dhqn u2ar m9al 7uv6 87am uesk 5det 5nxx 0k9e d30x 2u8z jsfn sfyq zlsr su" + } + // Before simulator v9.20, address confirmation data was not written to stdout. require.Contains(t, stdOut.String(), - `TITLE: Register + fmt.Sprintf(`TITLE: Register BODY: 1-of-3 Bitcoin multisig CONFIRM SCREEN END @@ -1097,10 +1118,9 @@ BODY: My multisig account CONFIRM SCREEN END CONFIRM SCREEN START TITLE: Receive to -BODY: bc1qdhqnu2arm9al7uv687amuesk5det5nxx0k9ed30x2u8zjsfnsfyqzlsrsu +BODY: %s CONFIRM SCREEN END -`, - ) +`, displayAddress)) } }) } diff --git a/api/firmware/psbt_test.go b/api/firmware/psbt_test.go index 0b281da..a3db3fa 100644 --- a/api/firmware/psbt_test.go +++ b/api/firmware/psbt_test.go @@ -835,23 +835,26 @@ func TestSimulatorBTCPSBTSilentPayment(t *testing.T) { func TestSimulatorBTCPSBTSendSelfSameAccount(t *testing.T) { type Test struct { sendSelfPath []uint32 + // expected from v9.26 + expected926 string // expected from v9.22 - expectedNew string + expected922 string // expected until v9.22 expectedOld string } - tests := []Test{ { // Same account sendSelfPath: []uint32{84 + HARDENED, 1 + HARDENED, 0 + HARDENED, 0, 0}, - expectedNew: "This BitBox (same account): tb1ql34ny8mcpgjqr0ngsnjmlpzjpgncyz2ygh2gye", + expected926: "This BitBox (same account): tb1q l34n y8mc pgjq r0ng snjm lpzj pgnc yz2y gh2g ye", + expected922: "This BitBox (same account): tb1ql34ny8mcpgjqr0ngsnjmlpzjpgncyz2ygh2gye", expectedOld: "This BitBox02: tb1ql34ny8mcpgjqr0ngsnjmlpzjpgncyz2ygh2gye", }, { // Different account sendSelfPath: []uint32{84 + HARDENED, 1 + HARDENED, 1 + HARDENED, 0, 0}, - expectedNew: "This BitBox (account #2): tb1qvrcm2akp30d7ecnqdjk8qdu09962ak005rcp6j", + expected926: "This BitBox (account #2): tb1q vrcm 2akp 30d7 ecnq djk8 qdu0 9962 ak00 5rcp 6j", + expected922: "This BitBox (account #2): tb1qvrcm2akp30d7ecnqdjk8qdu09962ak005rcp6j", expectedOld: "tb1qvrcm2akp30d7ecnqdjk8qdu09962ak005rcp6j", }, } @@ -860,7 +863,6 @@ func TestSimulatorBTCPSBTSendSelfSameAccount(t *testing.T) { t.Run("", func(t *testing.T) { testInitializedSimulators(t, func(t *testing.T, device *Device, stdOut *bytes.Buffer) { t.Helper() - fingerprint, err := device.RootFingerprint() require.NoError(t, err) @@ -953,12 +955,16 @@ func TestSimulatorBTCPSBTSendSelfSameAccount(t *testing.T) { require.NoError(t, psbt.MaybeFinalizeAll(psbt_)) require.NoError(t, txValidityCheck(psbt_)) - // v9.22 changed the format of the output string. - if device.Version().AtLeast(semver.NewSemVer(9, 22, 0)) { - require.Contains(t, stdOut.String(), "ADDRESS: "+test.expectedNew) - } else if device.Version().AtLeast(semver.NewSemVer(9, 20, 0)) { - // Before simulator v9.20, address confirmation data was not written to stdout. + // v9.22/v9.26 changed the format of the output string. + switch { + case device.Version().AtLeast(semver.NewSemVer(9, 26, 0)): + require.Contains(t, stdOut.String(), "ADDRESS: "+test.expected926) + case device.Version().AtLeast(semver.NewSemVer(9, 22, 0)): + require.Contains(t, stdOut.String(), "ADDRESS: "+test.expected922) + case device.Version().AtLeast(semver.NewSemVer(9, 20, 0)): require.Contains(t, stdOut.String(), "ADDRESS: "+test.expectedOld) + default: + // Before simulator v9.20, address confirmation data was not written to stdout. } // Change address is not confirmed diff --git a/api/firmware/testdata/simulators.json b/api/firmware/testdata/simulators.json index 411ee75..d27efd4 100644 --- a/api/firmware/testdata/simulators.json +++ b/api/firmware/testdata/simulators.json @@ -26,5 +26,9 @@ { "url": "https://github.com/BitBoxSwiss/bitbox02-firmware/releases/download/firmware%2Fv9.25.1/bitbox02-multi-v9.25.1-simulator1.0.0-linux-amd64", "sha256": "f4b4294a1a339b3a7d52cc0f4d93a19846099807f03adefab2b42bf9899bd5d4" + }, + { + "url": "https://github.com/BitBoxSwiss/bitbox02-firmware/releases/download/firmware%2Fv9.26.1/bitbox02-multi-v9.26.1-simulator1.0.0-linux-amd64", + "sha256": "91ddf47eb0653ce8b3d3344a8e329fc7fef90adfa51e39c5214830cf6e21cccf" } ]