Files

80 lines
1.9 KiB
Go

package acp
import (
"testing"
"github.com/coder/acp-go-sdk"
)
func TestAuthMethodFields(t *testing.T) {
desc := "with description"
cases := []struct {
name string
in acp.AuthMethod
wantID string
wantName string
wantDesc *string
wantMetaKey string
}{
{
name: "Agent variant",
in: acp.AuthMethod{Agent: &acp.AuthMethodAgent{
Id: "agent-id",
Name: "Agent",
Description: &desc,
Meta: map[string]any{"k": "agent"},
}},
wantID: "agent-id", wantName: "Agent", wantDesc: &desc, wantMetaKey: "agent",
},
{
name: "Terminal variant",
in: acp.AuthMethod{Terminal: &acp.AuthMethodTerminalInline{
Id: "term-id",
Name: "Terminal",
Meta: map[string]any{"k": "terminal"},
}},
wantID: "term-id", wantName: "Terminal", wantMetaKey: "terminal",
},
{
name: "EnvVar variant",
in: acp.AuthMethod{EnvVar: &acp.AuthMethodEnvVarInline{
Id: "env-id",
Name: "EnvVar",
Meta: map[string]any{"k": "envvar"},
}},
wantID: "env-id", wantName: "EnvVar", wantMetaKey: "envvar",
},
{
name: "zero-value (no variant set)",
in: acp.AuthMethod{},
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
id, name, desc, meta := AuthMethodFields(tc.in)
if id != tc.wantID {
t.Errorf("id = %q, want %q", id, tc.wantID)
}
if name != tc.wantName {
t.Errorf("name = %q, want %q", name, tc.wantName)
}
if (desc == nil) != (tc.wantDesc == nil) {
t.Errorf("desc nil mismatch: got=%v want=%v", desc, tc.wantDesc)
}
if desc != nil && tc.wantDesc != nil && *desc != *tc.wantDesc {
t.Errorf("desc = %q, want %q", *desc, *tc.wantDesc)
}
if tc.wantMetaKey == "" {
if meta != nil {
t.Errorf("meta = %v, want nil", meta)
}
return
}
if got, _ := meta["k"].(string); got != tc.wantMetaKey {
t.Errorf("meta[k] = %q, want %q", got, tc.wantMetaKey)
}
})
}
}