Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions api/firmware/backup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
})
}
42 changes: 31 additions & 11 deletions api/firmware/btc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package firmware
import (
"bytes"
"errors"
"fmt"
"slices"
"testing"

Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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",
)
})
}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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))
}
})
}
Expand Down
26 changes: 16 additions & 10 deletions api/firmware/psbt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
},
}
Expand All @@ -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)

Expand Down Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions api/firmware/testdata/simulators.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
]
Loading