65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package nsc
|
|
|
|
import "testing"
|
|
|
|
func TestParseProxyEndpoint(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
raw string
|
|
want string
|
|
wantOK bool
|
|
}{
|
|
{
|
|
name: "plain json payload",
|
|
raw: `{"endpoint":"127.0.0.1:61234"}`,
|
|
want: "127.0.0.1:61234",
|
|
wantOK: true,
|
|
},
|
|
{
|
|
name: "json wrapped with extra output",
|
|
raw: `Connected.
|
|
{"endpoint":"127.0.0.1:61235","rdp":{"credentials":{"username":"runneradmin","password":"runneradmin"}}}`,
|
|
want: "127.0.0.1:61235",
|
|
wantOK: true,
|
|
},
|
|
{
|
|
name: "missing endpoint field",
|
|
raw: `{"rdp":{"credentials":{"username":"runneradmin"}}}`,
|
|
wantOK: false,
|
|
},
|
|
{
|
|
name: "non-json output",
|
|
raw: `Failed: instance does not have service "winrm"`,
|
|
wantOK: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
tc := tc
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got, ok := parseProxyEndpoint(tc.raw)
|
|
if ok != tc.wantOK {
|
|
t.Fatalf("parseProxyEndpoint(%q) ok=%v, want %v", tc.raw, ok, tc.wantOK)
|
|
}
|
|
if got != tc.want {
|
|
t.Fatalf("parseProxyEndpoint(%q) endpoint=%q, want %q", tc.raw, got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIndicatesMissingProxyService(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
raw := `Failed: instance does not have service "winrm"`
|
|
if !indicatesMissingProxyService(raw, "winrm") {
|
|
t.Fatalf("indicatesMissingProxyService should return true for missing winrm message")
|
|
}
|
|
if indicatesMissingProxyService(raw, "ssh") {
|
|
t.Fatalf("indicatesMissingProxyService should be false when service name does not match")
|
|
}
|
|
}
|