github.com/prysmaticlabs/prysm@v1.4.4/validator/keymanager/imported/backup_test.go (about) 1 package imported 2 3 import ( 4 "context" 5 "encoding/hex" 6 "testing" 7 8 "github.com/prysmaticlabs/prysm/shared/bls" 9 "github.com/prysmaticlabs/prysm/shared/bytesutil" 10 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 11 "github.com/prysmaticlabs/prysm/shared/testutil/require" 12 ) 13 14 func TestImportedKeymanager_ExtractKeystores(t *testing.T) { 15 secretKeysCache = make(map[[48]byte]bls.SecretKey) 16 dr := &Keymanager{} 17 validatingKeys := make([]bls.SecretKey, 10) 18 for i := 0; i < len(validatingKeys); i++ { 19 secretKey, err := bls.RandKey() 20 require.NoError(t, err) 21 validatingKeys[i] = secretKey 22 secretKeysCache[bytesutil.ToBytes48(secretKey.PublicKey().Marshal())] = secretKey 23 } 24 ctx := context.Background() 25 password := "password" 26 27 // Extracting 0 public keys should return 0 keystores. 28 keystores, err := dr.ExtractKeystores(ctx, nil, password) 29 require.NoError(t, err) 30 assert.Equal(t, 0, len(keystores)) 31 32 // We attempt to extract a few indices. 33 keystores, err = dr.ExtractKeystores( 34 ctx, 35 []bls.PublicKey{ 36 validatingKeys[3].PublicKey(), 37 validatingKeys[5].PublicKey(), 38 validatingKeys[7].PublicKey(), 39 }, 40 password, 41 ) 42 require.NoError(t, err) 43 receivedPubKeys := make([][]byte, len(keystores)) 44 for i, k := range keystores { 45 pubKeyBytes, err := hex.DecodeString(k.Pubkey) 46 require.NoError(t, err) 47 receivedPubKeys[i] = pubKeyBytes 48 } 49 assert.DeepEqual(t, receivedPubKeys, [][]byte{ 50 validatingKeys[3].PublicKey().Marshal(), 51 validatingKeys[5].PublicKey().Marshal(), 52 validatingKeys[7].PublicKey().Marshal(), 53 }) 54 }