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") } }