package controller import ( "testing" "github.com/netbirdio/netbird/management/internals/controllers/network_map" nbpeer "github.com/netbirdio/netbird/management/server/peer" ) 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) } }