88 lines
2.1 KiB
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")
|
|
}
|
|
}
|