github.com/prysmaticlabs/prysm@v1.4.4/slasher/db/kv/validator_id_pubkey_test.go (about)

     1  package kv
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	types "github.com/prysmaticlabs/eth2-types"
     8  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
     9  )
    10  
    11  type publicKeyTestStruct struct {
    12  	validatorIndex types.ValidatorIndex
    13  	pk             []byte
    14  }
    15  
    16  var pkTests []publicKeyTestStruct
    17  
    18  func init() {
    19  	pkTests = []publicKeyTestStruct{
    20  		{
    21  			validatorIndex: 1,
    22  			pk:             []byte{1, 2, 3},
    23  		},
    24  		{
    25  			validatorIndex: 2,
    26  			pk:             []byte{4, 5, 6},
    27  		},
    28  		{
    29  			validatorIndex: 3,
    30  			pk:             []byte{7, 8, 9},
    31  		},
    32  	}
    33  }
    34  
    35  func TestNilDBValidatorPublicKey(t *testing.T) {
    36  
    37  	db := setupDB(t)
    38  	ctx := context.Background()
    39  
    40  	validatorIndex := types.ValidatorIndex(1)
    41  
    42  	pk, err := db.ValidatorPubKey(ctx, validatorIndex)
    43  	require.NoError(t, err, "Nil ValidatorPubKey should not return error")
    44  	require.DeepEqual(t, []uint8(nil), pk)
    45  }
    46  
    47  func TestSavePubKey(t *testing.T) {
    48  
    49  	db := setupDB(t)
    50  	ctx := context.Background()
    51  
    52  	for _, tt := range pkTests {
    53  		err := db.SavePubKey(ctx, tt.validatorIndex, tt.pk)
    54  		require.NoError(t, err, "Save validator public key failed")
    55  
    56  		pk, err := db.ValidatorPubKey(ctx, tt.validatorIndex)
    57  		require.NoError(t, err, "Failed to get validator public key")
    58  		require.NotNil(t, pk)
    59  		require.DeepEqual(t, tt.pk, pk, "Should return validator public key")
    60  	}
    61  }
    62  
    63  func TestDeletePublicKey(t *testing.T) {
    64  
    65  	db := setupDB(t)
    66  	ctx := context.Background()
    67  
    68  	for _, tt := range pkTests {
    69  		require.NoError(t, db.SavePubKey(ctx, tt.validatorIndex, tt.pk), "Save validator public key failed")
    70  	}
    71  
    72  	for _, tt := range pkTests {
    73  		pk, err := db.ValidatorPubKey(ctx, tt.validatorIndex)
    74  		require.NoError(t, err, "Failed to get validator public key")
    75  		require.NotNil(t, pk)
    76  		require.DeepEqual(t, tt.pk, pk, "Should return validator public key")
    77  
    78  		err = db.DeletePubKey(ctx, tt.validatorIndex)
    79  		require.NoError(t, err, "Delete validator public key")
    80  		pk, err = db.ValidatorPubKey(ctx, tt.validatorIndex)
    81  		require.NoError(t, err)
    82  		require.DeepEqual(t, []byte(nil), pk, "Expected validator public key to be deleted")
    83  	}
    84  }