test: keyring test refactor (#15039)

Co-authored-by: Julien Robert <julien@rbrt.fr>
Co-authored-by: Likhita Polavarapu <78951027+likhita-809@users.noreply.github.com>
This commit is contained in:
Julián Toledano 2023-02-17 17:44:58 +01:00 committed by GitHub
parent 77d347b482
commit 0debb58c0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 1476 additions and 924 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
package keyring
import (
"encoding/hex"
"fmt"
"testing"
@ -47,6 +48,45 @@ func TestNewSigningAlgoByString(t *testing.T) {
}
}
func TestDerive(t *testing.T) {
tests := []struct {
name string
algo SignatureAlgo
hdPath string
mnemonic string
bip39Passphrase string
derivedPriv string
}{
{
name: "secp256k1",
algo: hd.Secp256k1,
hdPath: "m/44'/118'/0'/0/0",
mnemonic: "circle music snake select deal march this romance until often welcome rich staff trigger drip exit there reopen denial insect hockey just wealth process",
bip39Passphrase: "",
derivedPriv: "1b5884fab5c22aeffef369f3454076cec534c75a4ee71add1245e2c8342994a2",
},
{
name: "secp256k1 with bip39Passphrase",
algo: hd.Secp256k1,
hdPath: "m/44'/118'/0'/0/0",
mnemonic: "circle music snake select deal march this romance until often welcome rich staff trigger drip exit there reopen denial insect hockey just wealth process",
bip39Passphrase: "test",
derivedPriv: "d5f925b9472b3793e839eae7722e5cef6766a91fad55cc42abea5e457ed5f648",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
derivedPriv, err := tt.algo.Derive()(tt.mnemonic, tt.bip39Passphrase, tt.hdPath)
require.NoError(t, err)
decodedPriv, err := hex.DecodeString(tt.derivedPriv)
require.NoError(t, err)
require.Equal(t, derivedPriv, decodedPriv)
})
}
}
func TestAltSigningAlgoList_Contains(t *testing.T) {
list := SigningAlgoList{hd.Secp256k1}

View File

@ -13,47 +13,62 @@ import (
)
func Test_writeReadLedgerInfo(t *testing.T) {
tmpKey := make([]byte, secp256k1.PubKeySize)
hexPK := "035AD6810A47F073553FF30D2FCC7E0D3B1C0B74B61A1AAA2582344037151E143A"
bz, err := hex.DecodeString(hexPK)
require.NoError(t, err)
copy(tmpKey, bz)
tests := []struct {
hexPK string
recordName string
expectedPath string
}{
{
hexPK: "035AD6810A47F073553FF30D2FCC7E0D3B1C0B74B61A1AAA2582344037151E143A",
recordName: "test_record",
expectedPath: "m/44'/118'/5'/0/1",
},
}
for _, tt := range tests {
t.Run(tt.hexPK, func(t *testing.T) {
tmpKey := make([]byte, secp256k1.PubKeySize)
hexPK := tt.hexPK
bz, err := hex.DecodeString(hexPK)
require.NoError(t, err)
copy(tmpKey, bz)
pk := &secp256k1.PubKey{Key: tmpKey}
path := hd.NewFundraiserParams(5, sdk.CoinType, 1)
k, err := NewLedgerRecord("some_name", pk, path)
require.NoError(t, err)
pk := &secp256k1.PubKey{Key: tmpKey}
path := hd.NewFundraiserParams(5, sdk.CoinType, 1)
k, err := NewLedgerRecord(tt.recordName, pk, path)
require.NoError(t, err)
l := k.GetLedger()
require.NotNil(t, l)
path = l.Path
require.Equal(t, "m/44'/118'/5'/0/1", path.String())
pubKey, err := k.GetPubKey()
require.NoError(t, err)
require.Equal(t,
fmt.Sprintf("PubKeySecp256k1{%s}", hexPK),
pubKey.String())
l := k.GetLedger()
require.NotNil(t, l)
path = l.Path
require.Equal(t, tt.expectedPath, path.String())
pubKey, err := k.GetPubKey()
require.NoError(t, err)
require.Equal(t,
fmt.Sprintf("PubKeySecp256k1{%s}", hexPK),
pubKey.String())
// Serialize and restore
cdc := getCodec()
serialized, err := cdc.Marshal(k)
require.NoError(t, err)
var restoredRecord Record
err = cdc.Unmarshal(serialized, &restoredRecord)
require.NoError(t, err)
require.NotNil(t, restoredRecord)
// Serialize and restore
cdc := getCodec()
serialized, err := cdc.Marshal(k)
require.NoError(t, err)
var restoredRecord Record
err = cdc.Unmarshal(serialized, &restoredRecord)
require.NoError(t, err)
require.NotNil(t, restoredRecord)
// Check both keys match
require.Equal(t, k.Name, restoredRecord.Name)
require.Equal(t, k.GetType(), restoredRecord.GetType())
// Check both keys match
require.Equal(t, k.Name, restoredRecord.Name)
require.Equal(t, k.GetType(), restoredRecord.GetType())
restoredPubKey, err := restoredRecord.GetPubKey()
require.NoError(t, err)
require.Equal(t, pubKey, restoredPubKey)
restoredPubKey, err := restoredRecord.GetPubKey()
require.NoError(t, err)
require.Equal(t, pubKey, restoredPubKey)
l = restoredRecord.GetLedger()
require.NotNil(t, l)
restoredPath := l.GetPath()
require.NoError(t, err)
require.Equal(t, path, restoredPath)
l = restoredRecord.GetLedger()
require.NotNil(t, l)
restoredPath := l.GetPath()
require.NoError(t, err)
require.Equal(t, path, restoredPath)
})
}
}