github.com/cosmos/cosmos-sdk@v0.50.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/cosmos/cosmos-sdk/crypto/hd" 11 "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" 12 sdk "github.com/cosmos/cosmos-sdk/types" 13 ) 14 15 func Test_writeReadLedgerInfo(t *testing.T) { 16 tests := []struct { 17 hexPK string 18 recordName string 19 expectedPath string 20 }{ 21 { 22 hexPK: "035AD6810A47F073553FF30D2FCC7E0D3B1C0B74B61A1AAA2582344037151E143A", 23 recordName: "test_record", 24 expectedPath: "m/44'/118'/5'/0/1", 25 }, 26 } 27 for _, tt := range tests { 28 t.Run(tt.hexPK, func(t *testing.T) { 29 tmpKey := make([]byte, secp256k1.PubKeySize) 30 hexPK := tt.hexPK 31 bz, err := hex.DecodeString(hexPK) 32 require.NoError(t, err) 33 copy(tmpKey, bz) 34 35 pk := &secp256k1.PubKey{Key: tmpKey} 36 path := hd.NewFundraiserParams(5, sdk.CoinType, 1) 37 k, err := NewLedgerRecord(tt.recordName, pk, path) 38 require.NoError(t, err) 39 40 l := k.GetLedger() 41 require.NotNil(t, l) 42 path = l.Path 43 require.Equal(t, tt.expectedPath, path.String()) 44 pubKey, err := k.GetPubKey() 45 require.NoError(t, err) 46 require.Equal(t, 47 fmt.Sprintf("PubKeySecp256k1{%s}", hexPK), 48 pubKey.String()) 49 50 // Serialize and restore 51 cdc := getCodec() 52 serialized, err := cdc.Marshal(k) 53 require.NoError(t, err) 54 var restoredRecord Record 55 err = cdc.Unmarshal(serialized, &restoredRecord) 56 require.NoError(t, err) 57 require.NotNil(t, restoredRecord) 58 59 // Check both keys match 60 require.Equal(t, k.Name, restoredRecord.Name) 61 require.Equal(t, k.GetType(), restoredRecord.GetType()) 62 63 restoredPubKey, err := restoredRecord.GetPubKey() 64 require.NoError(t, err) 65 require.Equal(t, pubKey, restoredPubKey) 66 67 l = restoredRecord.GetLedger() 68 require.NotNil(t, l) 69 restoredPath := l.GetPath() 70 require.NoError(t, err) 71 require.Equal(t, path, restoredPath) 72 }) 73 } 74 }