package kv import ( "context" "testing" "github.com/gogo/protobuf/proto" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" "github.com/prysmaticlabs/go-ssz" ) func TestStore_ProposerSlashing_CRUD(t *testing.T) { db := setupDB(t) defer teardownDB(t, db) 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 := ssz.HashTreeRoot(prop) if err != nil { t.Fatal(err) } retrieved, err := db.ProposerSlashing(ctx, slashingRoot) if err != nil { t.Fatal(err) } if retrieved != nil { t.Errorf("Expected nil proposer slashing, received %v", retrieved) } if err := db.SaveProposerSlashing(ctx, prop); err != nil { t.Fatal(err) } if !db.HasProposerSlashing(ctx, slashingRoot) { t.Error("Expected proposer slashing to exist in the db") } retrieved, err = db.ProposerSlashing(ctx, slashingRoot) if err != nil { t.Fatal(err) } if !proto.Equal(prop, retrieved) { t.Errorf("Wanted %v, received %v", prop, retrieved) } if err := db.DeleteProposerSlashing(ctx, slashingRoot); err != nil { t.Fatal(err) } if db.HasProposerSlashing(ctx, slashingRoot) { t.Error("Expected proposer slashing to have been deleted from the db") } } func TestStore_AttesterSlashing_CRUD(t *testing.T) { db := setupDB(t) defer teardownDB(t, db) 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 := ssz.HashTreeRoot(att) if err != nil { t.Fatal(err) } retrieved, err := db.AttesterSlashing(ctx, slashingRoot) if err != nil { t.Fatal(err) } if retrieved != nil { t.Errorf("Expected nil attester slashing, received %v", retrieved) } if err := db.SaveAttesterSlashing(ctx, att); err != nil { t.Fatal(err) } if !db.HasAttesterSlashing(ctx, slashingRoot) { t.Error("Expected attester slashing to exist in the db") } retrieved, err = db.AttesterSlashing(ctx, slashingRoot) if err != nil { t.Fatal(err) } if !proto.Equal(att, retrieved) { t.Errorf("Wanted %v, received %v", att, retrieved) } if err := db.DeleteAttesterSlashing(ctx, slashingRoot); err != nil { t.Fatal(err) } if db.HasAttesterSlashing(ctx, slashingRoot) { t.Error("Expected attester slashing to have been deleted from the db") } }