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  }