package infra import "testing" func TestParseNordVPNStatus_Connected(t *testing.T) { input := `Status: Connected Hostname: es42.nordvpn.com IP: 185.230.124.42 Country: Spain City: Madrid Current Technology: NordLynx Current Protocol: nordlynx Transfer: 1.2 MiB received, 500 KiB sent Uptime: 5 minutes 32 seconds` got := ParseNordVPNStatus(input) if !got.Connected { t.Error("expected Connected=true") } if got.Hostname != "es42.nordvpn.com" { t.Errorf("Hostname = %q, want es42.nordvpn.com", got.Hostname) } if got.IP != "185.230.124.42" { t.Errorf("IP = %q, want 185.230.124.42", got.IP) } if got.Country != "Spain" { t.Errorf("Country = %q, want Spain", got.Country) } if got.City != "Madrid" { t.Errorf("City = %q, want Madrid", got.City) } if got.Technology != "NordLynx" { t.Errorf("Technology = %q, want NordLynx", got.Technology) } } func TestParseNordVPNStatus_Disconnected(t *testing.T) { input := `Status: Disconnected` got := ParseNordVPNStatus(input) if got.Connected { t.Error("expected Connected=false") } if got.Status != "Disconnected" { t.Errorf("Status = %q, want Disconnected", got.Status) } } func TestParseNordVPNStatus_WithANSI(t *testing.T) { input := "\x1b[32mStatus: Connected\x1b[0m\n\x1b[32m- Hostname: us1234.nordvpn.com\x1b[0m" got := ParseNordVPNStatus(input) if !got.Connected { t.Error("expected Connected=true with ANSI codes") } if got.Hostname != "us1234.nordvpn.com" { t.Errorf("Hostname = %q, want us1234.nordvpn.com", got.Hostname) } }