github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/blockchain/info_test.go (about) 1 package blockchain 2 3 import ( 4 "context" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 9 testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" 10 "github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray" 11 "github.com/prysmaticlabs/prysm/beacon-chain/state/stategen" 12 "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1/wrapper" 13 "github.com/prysmaticlabs/prysm/shared/params" 14 "github.com/prysmaticlabs/prysm/shared/testutil" 15 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 16 "github.com/prysmaticlabs/prysm/shared/testutil/require" 17 ) 18 19 func TestService_TreeHandler(t *testing.T) { 20 req, err := http.NewRequest("GET", "/tree", nil) 21 require.NoError(t, err) 22 23 ctx := context.Background() 24 beaconDB := testDB.SetupDB(t) 25 headState, err := testutil.NewBeaconState() 26 require.NoError(t, err) 27 require.NoError(t, headState.SetBalances([]uint64{params.BeaconConfig().GweiPerEth})) 28 cfg := &Config{ 29 BeaconDB: beaconDB, 30 ForkChoiceStore: protoarray.New( 31 0, // justifiedEpoch 32 0, // finalizedEpoch 33 [32]byte{'a'}, 34 ), 35 StateGen: stategen.New(beaconDB), 36 } 37 s, err := NewService(ctx, cfg) 38 require.NoError(t, err) 39 require.NoError(t, s.cfg.ForkChoiceStore.ProcessBlock(ctx, 0, [32]byte{'a'}, [32]byte{'g'}, [32]byte{'c'}, 0, 0)) 40 require.NoError(t, s.cfg.ForkChoiceStore.ProcessBlock(ctx, 1, [32]byte{'b'}, [32]byte{'a'}, [32]byte{'c'}, 0, 0)) 41 s.setHead([32]byte{'a'}, wrapper.WrappedPhase0SignedBeaconBlock(testutil.NewBeaconBlock()), headState) 42 43 rr := httptest.NewRecorder() 44 handler := http.HandlerFunc(s.TreeHandler) 45 46 handler.ServeHTTP(rr, req) 47 48 assert.Equal(t, http.StatusOK, rr.Code) 49 }