60 lines
1.7 KiB
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)
|
|
}
|
|
}
|