github.com/Finschia/finschia-sdk@v0.48.1/crypto/keyring/types_test.go (about) 1 package keyring 2 3 import ( 4 "encoding/hex" 5 "fmt" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 "github.com/Finschia/finschia-sdk/crypto/hd" 11 "github.com/Finschia/finschia-sdk/crypto/keys/secp256k1" 12 sdk "github.com/Finschia/finschia-sdk/types" 13 ) 14 15 func Test_writeReadLedgerInfo(t *testing.T) { 16 tmpKey := make([]byte, secp256k1.PubKeySize) 17 hexPK := "035AD6810A47F073553FF30D2FCC7E0D3B1C0B74B61A1AAA2582344037151E143A" 18 bz, err := hex.DecodeString(hexPK) 19 require.NoError(t, err) 20 copy(tmpKey[:], bz) 21 22 lInfo := newLedgerInfo("some_name", &secp256k1.PubKey{Key: tmpKey}, *hd.NewFundraiserParams(5, sdk.CoinType, 1), hd.Secp256k1Type) 23 require.Equal(t, TypeLedger, lInfo.GetType()) 24 25 path, err := lInfo.GetPath() 26 require.NoError(t, err) 27 require.Equal(t, "m/44'/438'/5'/0/1", path.String()) 28 require.Equal(t, 29 fmt.Sprintf("PubKeySecp256k1{%s}", hexPK), 30 lInfo.GetPubKey().String()) 31 32 // Serialize and restore 33 serialized := marshalInfo(lInfo) 34 restoredInfo, err := unmarshalInfo(serialized) 35 require.NoError(t, err) 36 require.NotNil(t, restoredInfo) 37 38 // Check both keys match 39 require.Equal(t, lInfo.GetName(), restoredInfo.GetName()) 40 require.Equal(t, lInfo.GetType(), restoredInfo.GetType()) 41 require.Equal(t, lInfo.GetPubKey(), restoredInfo.GetPubKey()) 42 43 restoredPath, err := restoredInfo.GetPath() 44 require.NoError(t, err) 45 require.Equal(t, path, restoredPath) 46 }