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  }