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

60 lines
1.7 KiB
Go

package app
import "testing"
func TestParseVPNLocationsOutput(t *testing.T) {
raw := `
ISO Country Region Ping
DE Germany Frankfurt 35
US United States New-York 120
US United States Los-Angeles 130
`
locs, err := parseVPNLocationsOutput(raw)
if err != nil {
t.Fatalf("parseVPNLocationsOutput returned error: %v", err)
}
if len(locs) != 3 {
t.Fatalf("expected 3 locations, got %d", len(locs))
}
if locs[0].ISO != "DE" || locs[1].ISO != "US" || locs[2].ISO != "US" {
t.Fatalf("unexpected iso order: %+v", locs)
}
if locs[1].Target != "New-York" {
t.Fatalf("unexpected target parse: %+v", locs[1])
}
if locs[2].Target != "Los-Angeles" {
t.Fatalf("unexpected target parse: %+v", locs[2])
}
}
func TestParseVPNLocationsOutputRejectsInvalid(t *testing.T) {
raw := "error: not logged in\ntry: adguardvpn-cli-root login\n"
if _, err := parseVPNLocationsOutput(raw); err == nil {
t.Fatal("expected parse error for invalid output, got nil")
}
}
func TestInferVPNLocationTargetFromLabel(t *testing.T) {
got := inferVPNLocationTargetFromLabel("US United States Los Angeles (271 ms)", "US")
if got != "United States Los Angeles" {
t.Fatalf("unexpected target for basic label: %q", got)
}
got = inferVPNLocationTargetFromLabel("RU Russia Moscow (Virtual) (29 ms)", "RU")
if got != "Russia Moscow (Virtual)" {
t.Fatalf("unexpected target for virtual label: %q", got)
}
}
func TestCommonPrefixTokens(t *testing.T) {
in := [][]string{
{"United", "States", "Los", "Angeles"},
{"United", "States", "Boston"},
{"United", "States", "Seattle"},
}
pfx := commonPrefixTokens(in)
if len(pfx) != 2 || pfx[0] != "United" || pfx[1] != "States" {
t.Fatalf("unexpected common prefix: %#v", pfx)
}
}