mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-26 01:21:30 +02:00
* fix a nil-ptr error occuring in sendInitialSync when the peer being synced is deleted Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> * handle a nil ptr in GetPeerNetworkMapComponents Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io> --------- Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
134 lines
3.5 KiB
Go
134 lines
3.5 KiB
Go
package controller
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/netbirdio/netbird/management/internals/controllers/network_map"
|
|
"github.com/netbirdio/netbird/management/server/account"
|
|
nbpeer "github.com/netbirdio/netbird/management/server/peer"
|
|
"github.com/netbirdio/netbird/management/server/types"
|
|
"github.com/stretchr/testify/assert"
|
|
"go.uber.org/mock/gomock"
|
|
)
|
|
|
|
func TestComputeForwarderPort(t *testing.T) {
|
|
// Test with empty peers list
|
|
peers := []*nbpeer.Peer{}
|
|
result := computeForwarderPort(peers, "v0.59.0")
|
|
if result != int64(network_map.OldForwarderPort) {
|
|
t.Errorf("Expected %d for empty peers list, got %d", network_map.OldForwarderPort, result)
|
|
}
|
|
|
|
// Test with peers that have old versions
|
|
peers = []*nbpeer.Peer{
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "0.57.0",
|
|
},
|
|
},
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "0.26.0",
|
|
},
|
|
},
|
|
}
|
|
result = computeForwarderPort(peers, "v0.59.0")
|
|
if result != int64(network_map.OldForwarderPort) {
|
|
t.Errorf("Expected %d for peers with old versions, got %d", network_map.OldForwarderPort, result)
|
|
}
|
|
|
|
// Test with peers that have new versions
|
|
peers = []*nbpeer.Peer{
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "0.59.0",
|
|
},
|
|
},
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "0.59.0",
|
|
},
|
|
},
|
|
}
|
|
result = computeForwarderPort(peers, "v0.59.0")
|
|
if result != int64(network_map.DnsForwarderPort) {
|
|
t.Errorf("Expected %d for peers with new versions, got %d", network_map.DnsForwarderPort, result)
|
|
}
|
|
|
|
// Test with peers that have mixed versions
|
|
peers = []*nbpeer.Peer{
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "0.59.0",
|
|
},
|
|
},
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "0.57.0",
|
|
},
|
|
},
|
|
}
|
|
result = computeForwarderPort(peers, "v0.59.0")
|
|
if result != int64(network_map.OldForwarderPort) {
|
|
t.Errorf("Expected %d for peers with mixed versions, got %d", network_map.OldForwarderPort, result)
|
|
}
|
|
|
|
// Test with peers that have empty version
|
|
peers = []*nbpeer.Peer{
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "",
|
|
},
|
|
},
|
|
}
|
|
result = computeForwarderPort(peers, "v0.59.0")
|
|
if result != int64(network_map.OldForwarderPort) {
|
|
t.Errorf("Expected %d for peers with empty version, got %d", network_map.OldForwarderPort, result)
|
|
}
|
|
|
|
peers = []*nbpeer.Peer{
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "development",
|
|
},
|
|
},
|
|
}
|
|
result = computeForwarderPort(peers, "v0.59.0")
|
|
if result == int64(network_map.OldForwarderPort) {
|
|
t.Errorf("Expected %d for peers with dev version, got %d", network_map.DnsForwarderPort, result)
|
|
}
|
|
|
|
// Test with peers that have unknown version string
|
|
peers = []*nbpeer.Peer{
|
|
{
|
|
Meta: nbpeer.PeerSystemMeta{
|
|
WtVersion: "unknown",
|
|
},
|
|
},
|
|
}
|
|
result = computeForwarderPort(peers, "v0.59.0")
|
|
if result != int64(network_map.OldForwarderPort) {
|
|
t.Errorf("Expected %d for peers with unknown version, got %d", network_map.OldForwarderPort, result)
|
|
}
|
|
}
|
|
|
|
func TestGetValidatedPeerWithComponents_DeletedPeer(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
mockrequestBuffer := account.NewMockRequestBuffer(ctrl)
|
|
|
|
c := Controller{
|
|
requestBuffer: mockrequestBuffer,
|
|
}
|
|
|
|
mockrequestBuffer.EXPECT().GetAccountWithBackpressure(gomock.Any(), gomock.Any()).Return(&types.Account{}, nil)
|
|
peer, components, netmap, posturechecks, dnsforwardPort, err := c.GetValidatedPeerWithComponents(context.TODO(), false, "test-account-id", &nbpeer.Peer{ID: "test-peer-id"})
|
|
|
|
assert.Nil(t, peer)
|
|
assert.Nil(t, components)
|
|
assert.Nil(t, netmap)
|
|
assert.Nil(t, posturechecks)
|
|
assert.Equal(t, int64(0), dnsforwardPort)
|
|
assert.NotNil(t, err)
|
|
}
|