wormhole/node/pkg/common/guardianset_test.go

95 lines
2.6 KiB
Go

package common
import (
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/stretchr/testify/assert"
)
func TestKeyIndex(t *testing.T) {
type test struct {
guardianSet GuardianSet
address string
result bool
keyIndex int
}
guardianSet := GuardianSet{
Keys: []common.Address{
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"),
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"),
},
Index: 1,
}
tests := []test{
{guardianSet: guardianSet, address: "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed", result: true, keyIndex: 0},
{guardianSet: guardianSet, address: "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaee", result: true, keyIndex: 1},
{guardianSet: guardianSet, address: "0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaef", result: false, keyIndex: -1},
}
for _, testCase := range tests {
t.Run(string(testCase.address), func(t *testing.T) {
gs := testCase.guardianSet
keyIndex, result := gs.KeyIndex(common.HexToAddress(testCase.address))
assert.Equal(t, result, testCase.result)
assert.Equal(t, keyIndex, testCase.keyIndex)
})
}
}
func TestKeysAsHexStrings(t *testing.T) {
gs := GuardianSet{
Keys: []common.Address{
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"),
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"),
},
Index: 1,
}
keyStrings := make([]string, len(gs.Keys))
// Note that go-ethereum common.HexToAddress() will force a supplied all-lower
// address to mixedcase for a valid checksum, which is why these are different
keyStrings[0] = "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"
keyStrings[1] = "0x5Aaeb6053f3e94c9B9a09F33669435e7EF1BeAee"
assert.Equal(t, keyStrings, gs.KeysAsHexStrings())
}
func TestNewGuardianSetState(t *testing.T) {
gss := NewGuardianSetState()
assert.NotNil(t, gss)
assert.Nil(t, gss.current)
assert.Nil(t, gss.Get())
}
func TestSet(t *testing.T) {
var gs GuardianSet = GuardianSet{
Keys: []common.Address{
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"),
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"),
},
Index: 1,
}
gss := NewGuardianSetState()
assert.Nil(t, gss.current)
gss.Set(&gs)
assert.Equal(t, gss.current, &gs)
}
func TestGet(t *testing.T) {
var gs GuardianSet = GuardianSet{
Keys: []common.Address{
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed"),
common.HexToAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaee"),
},
Index: 1,
}
gss := NewGuardianSetState()
assert.Nil(t, gss.Get())
gss.Set(&gs)
assert.Equal(t, gss.Get(), &gs)
}