github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/rpc/prysm/v1alpha1/debug/block_test.go (about) 1 package debug 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/prysmaticlabs/go-bitfield" 9 mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" 10 "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" 11 dbTest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" 12 "github.com/prysmaticlabs/prysm/beacon-chain/state/stategen" 13 pbrpc "github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1" 14 ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1" 15 "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1/wrapper" 16 "github.com/prysmaticlabs/prysm/shared/params" 17 "github.com/prysmaticlabs/prysm/shared/testutil" 18 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 19 "github.com/prysmaticlabs/prysm/shared/testutil/require" 20 ) 21 22 func TestServer_GetBlock(t *testing.T) { 23 db := dbTest.SetupDB(t) 24 ctx := context.Background() 25 26 b := testutil.NewBeaconBlock() 27 b.Block.Slot = 100 28 require.NoError(t, db.SaveBlock(ctx, wrapper.WrappedPhase0SignedBeaconBlock(b))) 29 blockRoot, err := b.Block.HashTreeRoot() 30 require.NoError(t, err) 31 bs := &Server{ 32 BeaconDB: db, 33 } 34 res, err := bs.GetBlock(ctx, &pbrpc.BlockRequest{ 35 BlockRoot: blockRoot[:], 36 }) 37 require.NoError(t, err) 38 wanted, err := b.MarshalSSZ() 39 require.NoError(t, err) 40 assert.DeepEqual(t, wanted, res.Encoded) 41 42 // Checking for nil block. 43 blockRoot = [32]byte{} 44 res, err = bs.GetBlock(ctx, &pbrpc.BlockRequest{ 45 BlockRoot: blockRoot[:], 46 }) 47 require.NoError(t, err) 48 assert.DeepEqual(t, []byte{}, res.Encoded) 49 } 50 51 func TestServer_GetAttestationInclusionSlot(t *testing.T) { 52 db := dbTest.SetupDB(t) 53 ctx := context.Background() 54 offset := int64(2 * params.BeaconConfig().SlotsPerEpoch.Mul(params.BeaconConfig().SecondsPerSlot)) 55 bs := &Server{ 56 BeaconDB: db, 57 StateGen: stategen.New(db), 58 GenesisTimeFetcher: &mock.ChainService{Genesis: time.Now().Add(time.Duration(-1*offset) * time.Second)}, 59 } 60 61 s, _ := testutil.DeterministicGenesisState(t, 2048) 62 tr := [32]byte{'a'} 63 require.NoError(t, bs.StateGen.SaveState(ctx, tr, s)) 64 c, err := helpers.BeaconCommitteeFromState(s, 1, 0) 65 require.NoError(t, err) 66 67 a := ðpb.Attestation{ 68 Data: ðpb.AttestationData{ 69 Target: ðpb.Checkpoint{Root: tr[:]}, 70 Source: ðpb.Checkpoint{Root: make([]byte, 32)}, 71 BeaconBlockRoot: make([]byte, 32), 72 Slot: 1, 73 }, 74 AggregationBits: bitfield.Bitlist{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01}, 75 Signature: make([]byte, 96), 76 } 77 b := testutil.NewBeaconBlock() 78 b.Block.Slot = 2 79 b.Block.Body.Attestations = []*ethpb.Attestation{a} 80 require.NoError(t, bs.BeaconDB.SaveBlock(ctx, wrapper.WrappedPhase0SignedBeaconBlock(b))) 81 res, err := bs.GetInclusionSlot(ctx, &pbrpc.InclusionSlotRequest{Slot: 1, Id: uint64(c[0])}) 82 require.NoError(t, err) 83 require.Equal(t, b.Block.Slot, res.Slot) 84 res, err = bs.GetInclusionSlot(ctx, &pbrpc.InclusionSlotRequest{Slot: 1, Id: 9999999}) 85 require.NoError(t, err) 86 require.Equal(t, params.BeaconConfig().FarFutureSlot, res.Slot) 87 }