Files
node/network/no_ingress_conn_alert_test.go

66 lines
1.9 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package network
import (
"testing"
"github.com/stretchr/testify/require"
validators "github.com/luxfi/validators"
"github.com/luxfi/ids"
)
type fakeValidatorRetriever struct {
result bool
}
func (m *fakeValidatorRetriever) GetValidator(ids.ID, ids.NodeID) (*validators.GetValidatorOutput, bool) {
return nil, m.result
}
type fakeIngressConnectionCounter struct {
res int
}
func (m *fakeIngressConnectionCounter) IngressConnCount() int {
return m.res
}
func TestNoIngressConnAlertHealthCheck(t *testing.T) {
for _, testCase := range []struct {
name string
getValidatorResult bool
ingressConnCountResult int
expectedErr error
expectedResult interface{}
}{
{
name: "not a validator of a primary network",
expectedResult: map[string]interface{}{"ingressConnectionCount": 0, "primaryNetworkValidator": false},
},
{
name: "a validator of the primary network",
getValidatorResult: true,
expectedResult: map[string]interface{}{
"ingressConnectionCount": 0, "primaryNetworkValidator": true,
},
expectedErr: ErrNoIngressConnections,
},
{
name: "a validator with ingress connections",
expectedResult: map[string]interface{}{"ingressConnectionCount": 42, "primaryNetworkValidator": true},
expectedErr: nil,
ingressConnCountResult: 42,
getValidatorResult: true,
},
} {
t.Run(testCase.name, func(t *testing.T) {
result, err := checkNoIngressConnections(ids.EmptyNodeID, &fakeIngressConnectionCounter{res: testCase.ingressConnCountResult}, &fakeValidatorRetriever{result: testCase.getValidatorResult})
require.Equal(t, testCase.expectedErr, err)
require.Equal(t, testCase.expectedResult, result)
})
}
}