github.com/onflow/flow-go@v0.33.17/network/p2p/scoring/utils_test.go (about)

     1  package scoring_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  
     8  	"github.com/onflow/flow-go/module/mock"
     9  	"github.com/onflow/flow-go/network/p2p/scoring"
    10  	"github.com/onflow/flow-go/utils/unittest"
    11  )
    12  
    13  // TestHasValidIdentity_Unknown tests that when a peer has an unknown identity, the HasValidIdentity returns InvalidPeerIDError
    14  func TestHasValidIdentity_Unknown(t *testing.T) {
    15  	peerId := unittest.PeerIdFixture(t)
    16  	idProvider := mock.NewIdentityProvider(t)
    17  	idProvider.On("ByPeerID", peerId).Return(nil, false)
    18  
    19  	identity, err := scoring.HasValidFlowIdentity(idProvider, peerId)
    20  	require.Nil(t, identity)
    21  	require.Error(t, err)
    22  	require.True(t, scoring.IsInvalidPeerIDError(err))
    23  	require.Contains(t, err.Error(), scoring.PeerIdStatusUnknown)
    24  }
    25  
    26  // TestHasValidIdentity_Ejected tests that when a peer has been ejected, the HasValidIdentity returns an InvalidPeerIDError.
    27  func TestHasValidIdentity_Ejected(t *testing.T) {
    28  	idProvider := mock.NewIdentityProvider(t)
    29  
    30  	ejectedIdentity := unittest.IdentityFixture()
    31  	ejectedIdentity.Ejected = true
    32  	peerId := unittest.PeerIdFixture(t)
    33  	idProvider.On("ByPeerID", peerId).Return(ejectedIdentity, true)
    34  
    35  	identity, err := scoring.HasValidFlowIdentity(idProvider, peerId)
    36  	require.Error(t, err)
    37  	require.True(t, scoring.IsInvalidPeerIDError(err))
    38  	require.Contains(t, err.Error(), scoring.PeerIdStatusEjected)
    39  	require.Nil(t, identity)
    40  }
    41  
    42  // TestHasValidIdentity_valid tests that when a peer has a valid identity, the HasValidIdentity returns that identity.
    43  func TestHasValidIdentity_Valid(t *testing.T) {
    44  	idProvider := mock.NewIdentityProvider(t)
    45  
    46  	trueID := unittest.IdentityFixture()
    47  	peerId := unittest.PeerIdFixture(t)
    48  	idProvider.On("ByPeerID", peerId).Return(trueID, true)
    49  
    50  	identity, err := scoring.HasValidFlowIdentity(idProvider, peerId)
    51  	require.NoError(t, err)
    52  	require.Equal(t, trueID, identity)
    53  }