github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/rpc/eth/v1/debug/debug_test.go (about)

     1  package debug
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	types "github.com/prysmaticlabs/eth2-types"
     8  	blockchainmock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing"
     9  	"github.com/prysmaticlabs/prysm/beacon-chain/rpc/testutil"
    10  	ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1"
    11  	"github.com/prysmaticlabs/prysm/shared/bytesutil"
    12  	sharedtestutil "github.com/prysmaticlabs/prysm/shared/testutil"
    13  	"github.com/prysmaticlabs/prysm/shared/testutil/assert"
    14  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
    15  	"google.golang.org/protobuf/types/known/emptypb"
    16  )
    17  
    18  func TestGetBeaconState(t *testing.T) {
    19  	fakeState, err := sharedtestutil.NewBeaconState()
    20  	require.NoError(t, err)
    21  	server := &Server{
    22  		StateFetcher: &testutil.MockFetcher{
    23  			BeaconState: fakeState,
    24  		},
    25  	}
    26  	resp, err := server.GetBeaconState(context.Background(), &ethpb.StateRequest{
    27  		StateId: make([]byte, 0),
    28  	})
    29  	require.NoError(t, err)
    30  	assert.NotNil(t, resp)
    31  }
    32  
    33  func TestGetBeaconStateSSZ(t *testing.T) {
    34  	fakeState, err := sharedtestutil.NewBeaconState()
    35  	require.NoError(t, err)
    36  	sszState, err := fakeState.MarshalSSZ()
    37  	require.NoError(t, err)
    38  
    39  	server := &Server{
    40  		StateFetcher: &testutil.MockFetcher{
    41  			BeaconState: fakeState,
    42  		},
    43  	}
    44  	resp, err := server.GetBeaconStateSSZ(context.Background(), &ethpb.StateRequest{
    45  		StateId: make([]byte, 0),
    46  	})
    47  	require.NoError(t, err)
    48  	assert.NotNil(t, resp)
    49  
    50  	assert.DeepEqual(t, sszState, resp.Data)
    51  }
    52  
    53  func TestListForkChoiceHeads(t *testing.T) {
    54  	ctx := context.Background()
    55  
    56  	expectedSlotsAndRoots := []struct {
    57  		Slot types.Slot
    58  		Root [32]byte
    59  	}{{
    60  		Slot: 0,
    61  		Root: bytesutil.ToBytes32(bytesutil.PadTo([]byte("foo"), 32)),
    62  	}, {
    63  		Slot: 1,
    64  		Root: bytesutil.ToBytes32(bytesutil.PadTo([]byte("bar"), 32)),
    65  	}}
    66  
    67  	server := &Server{
    68  		HeadFetcher: &blockchainmock.ChainService{},
    69  	}
    70  	resp, err := server.ListForkChoiceHeads(ctx, &emptypb.Empty{})
    71  	require.NoError(t, err)
    72  	assert.Equal(t, 2, len(resp.Data))
    73  	for _, sr := range expectedSlotsAndRoots {
    74  		found := false
    75  		for _, h := range resp.Data {
    76  			if h.Slot == sr.Slot {
    77  				found = true
    78  				assert.DeepEqual(t, sr.Root[:], h.Root)
    79  			}
    80  		}
    81  		assert.Equal(t, true, found, "Expected head not found")
    82  	}
    83  }