status-im/status-go

View on GitHub
account/generator/utils_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package generator

import (
    "testing"

    "github.com/stretchr/testify/assert"
    "github.com/stretchr/testify/require"

    "github.com/status-im/status-go/eth-node/types"
    "github.com/status-im/status-go/extkeys"
)

func generateTestKey(t *testing.T) *extkeys.ExtendedKey {
    mnemonic := extkeys.NewMnemonic()
    mnemonicPhrase, err := mnemonic.MnemonicPhrase(extkeys.EntropyStrength128, extkeys.EnglishLanguage)
    require.NoError(t, err)

    masterExtendedKey, err := extkeys.NewMaster(mnemonic.MnemonicSeed(mnemonicPhrase, ""))
    require.NoError(t, err)

    return masterExtendedKey
}

func TestValidateKeystoreExtendedKey(t *testing.T) {
    extendedKey1 := generateTestKey(t)
    extendedKey2 := generateTestKey(t)

    // new keystore file format
    key := &types.Key{
        PrivateKey:  extendedKey1.ToECDSA(),
        ExtendedKey: extendedKey1,
    }
    assert.NoError(t, ValidateKeystoreExtendedKey(key))

    // old keystore file format where the extended key was
    // from another derivation path and not the same of the private key
    oldKey := &types.Key{
        PrivateKey:  extendedKey1.ToECDSA(),
        ExtendedKey: extendedKey2,
    }
    assert.Error(t, ValidateKeystoreExtendedKey(oldKey))

    // normal key where we don't have an extended key
    normalKey := &types.Key{
        PrivateKey:  extendedKey1.ToECDSA(),
        ExtendedKey: nil,
    }
    assert.NoError(t, ValidateKeystoreExtendedKey(normalKey))
}