platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
87
selective-vpn-api/app/vpn_handlers_location_resolve_test.go
Normal file
87
selective-vpn-api/app/vpn_handlers_location_resolve_test.go
Normal file
@@ -0,0 +1,87 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user