package kv import ( "context" "testing" "github.com/gogo/protobuf/proto" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/prysm/shared/testutil/assert" "github.com/prysmaticlabs/prysm/shared/testutil/require" ) func TestStore_ProposerSlashing_CRUD(t *testing.T) { db := setupDB(t) ctx := context.Background() prop := ðpb.ProposerSlashing{ Header_1: ðpb.SignedBeaconBlockHeader{ Header: ðpb.BeaconBlockHeader{ ProposerIndex: 5, BodyRoot: make([]byte, 32), ParentRoot: make([]byte, 32), StateRoot: make([]byte, 32), }, Signature: make([]byte, 96), }, Header_2: ðpb.SignedBeaconBlockHeader{ Header: ðpb.BeaconBlockHeader{ ProposerIndex: 5, BodyRoot: make([]byte, 32), ParentRoot: make([]byte, 32), StateRoot: make([]byte, 32), }, Signature: make([]byte, 96), }, } slashingRoot, err := prop.HashTreeRoot() require.NoError(t, err) retrieved, err := db.ProposerSlashing(ctx, slashingRoot) require.NoError(t, err) assert.Equal(t, (*ethpb.ProposerSlashing)(nil), retrieved, "Expected nil proposer slashing") require.NoError(t, db.SaveProposerSlashing(ctx, prop)) assert.Equal(t, true, db.HasProposerSlashing(ctx, slashingRoot), "Expected proposer slashing to exist in the db") retrieved, err = db.ProposerSlashing(ctx, slashingRoot) require.NoError(t, err) assert.Equal(t, true, proto.Equal(prop, retrieved), "Wanted %v, received %v", prop, retrieved) require.NoError(t, db.deleteProposerSlashing(ctx, slashingRoot)) assert.Equal(t, false, db.HasProposerSlashing(ctx, slashingRoot), "Expected proposer slashing to have been deleted from the db") } func TestStore_AttesterSlashing_CRUD(t *testing.T) { db := setupDB(t) ctx := context.Background() att := ðpb.AttesterSlashing{ Attestation_1: ðpb.IndexedAttestation{ Data: ðpb.AttestationData{ BeaconBlockRoot: make([]byte, 32), Slot: 5, Source: ðpb.Checkpoint{ Epoch: 0, Root: make([]byte, 32), }, Target: ðpb.Checkpoint{ Epoch: 0, Root: make([]byte, 32), }, }, Signature: make([]byte, 96), }, Attestation_2: ðpb.IndexedAttestation{ Data: ðpb.AttestationData{ BeaconBlockRoot: make([]byte, 32), Slot: 7, Source: ðpb.Checkpoint{ Epoch: 0, Root: make([]byte, 32), }, Target: ðpb.Checkpoint{ Epoch: 0, Root: make([]byte, 32), }, }, Signature: make([]byte, 96), }, } slashingRoot, err := att.HashTreeRoot() require.NoError(t, err) retrieved, err := db.AttesterSlashing(ctx, slashingRoot) require.NoError(t, err) assert.Equal(t, (*ethpb.AttesterSlashing)(nil), retrieved, "Expected nil attester slashing") require.NoError(t, db.SaveAttesterSlashing(ctx, att)) assert.Equal(t, true, db.HasAttesterSlashing(ctx, slashingRoot), "Expected attester slashing to exist in the db") retrieved, err = db.AttesterSlashing(ctx, slashingRoot) require.NoError(t, err) assert.Equal(t, true, proto.Equal(att, retrieved), "Wanted %v, received %v", att, retrieved) require.NoError(t, db.deleteAttesterSlashing(ctx, slashingRoot)) assert.Equal(t, false, db.HasAttesterSlashing(ctx, slashingRoot), "Expected attester slashing to have been deleted from the db") }