Files
elmprodvpn/selective-vpn-api/app/vpn_handlers_location_resolve_test.go

88 lines
2.1 KiB
Go

package app
import "testing"
func TestResolveVPNLocationSelection_MultiCityISO(t *testing.T) {
locs := []vpnLocationItem{
{ISO: "US", Label: "US United States Boston (10 ms)", Target: "United States Boston"},
{ISO: "US", Label: "US United States Los Angeles (20 ms)", Target: "United States Los Angeles"},
{ISO: "SE", Label: "SE Sweden Stockholm (30 ms)", Target: "SE"},
}
target, iso, label, validated, err := resolveVPNLocationSelection(
"United States Los Angeles",
"US",
"",
locs,
)
if err != nil {
t.Fatalf("resolve returned error: %v", err)
}
if iso != "US" {
t.Fatalf("expected iso=US, got %q", iso)
}
if target != "Los Angeles" {
t.Fatalf("expected city connect arg, got %q", target)
}
if label != "US United States Los Angeles (20 ms)" {
t.Fatalf("unexpected label: %q", label)
}
if !validated {
t.Fatal("expected validated=true")
}
}
func TestResolveVPNLocationSelection_SingleCityFallbackToISO(t *testing.T) {
locs := []vpnLocationItem{
{ISO: "SE", Label: "SE Sweden Stockholm (30 ms)", Target: "Sweden Stockholm"},
}
target, iso, _, validated, err := resolveVPNLocationSelection(
"Sweden Stockholm",
"SE",
"",
locs,
)
if err != nil {
t.Fatalf("resolve returned error: %v", err)
}
if iso != "SE" || target != "SE" {
t.Fatalf("expected SE->SE fallback, got iso=%q target=%q", iso, target)
}
if !validated {
t.Fatal("expected validated=true")
}
}
func TestResolveVPNLocationSelection_CacheUnavailableISOOnly(t *testing.T) {
target, iso, _, validated, err := resolveVPNLocationSelection(
"",
"AU",
"",
nil,
)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if target != "AU" || iso != "AU" {
t.Fatalf("expected AU/AU, got target=%q iso=%q", target, iso)
}
if validated {
t.Fatal("expected validated=false when catalog is unavailable")
}
}
func TestResolveVPNLocationSelection_UnknownTargetRejected(t *testing.T) {
locs := []vpnLocationItem{
{ISO: "SE", Label: "SE Sweden Stockholm (30 ms)", Target: "SE"},
}
if _, _, _, _, err := resolveVPNLocationSelection(
"__invalid__",
"",
"",
locs,
); err == nil {
t.Fatal("expected error for unknown target")
}
}