58 lines
2.2 KiB
Go
58 lines
2.2 KiB
Go
package config
|
|
|
|
import "testing"
|
|
|
|
func TestNormalizeClaudeFingerprintProfile(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
raw string
|
|
want string
|
|
wantK bool
|
|
}{
|
|
{name: "empty", raw: "", want: ClaudeFingerprintProfileDefault, wantK: true},
|
|
{name: "blank", raw: " ", want: ClaudeFingerprintProfileDefault, wantK: true},
|
|
{name: "canonical", raw: "claude-code-cli", want: ClaudeFingerprintProfileClaudeCodeCLI, wantK: true},
|
|
{name: "mixed case and padding", raw: " Claude-Code-CLI ", want: ClaudeFingerprintProfileClaudeCodeCLI, wantK: true},
|
|
{name: "legacy alias", raw: "oauth-cli", want: ClaudeFingerprintProfileClaudeCodeCLI, wantK: true},
|
|
{name: "typo", raw: "claude-code", want: ClaudeFingerprintProfileDefault, wantK: false},
|
|
{name: "unrelated", raw: "chrome", want: ClaudeFingerprintProfileDefault, wantK: false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
got, ok := NormalizeClaudeFingerprintProfile(tt.raw)
|
|
if got != tt.want || ok != tt.wantK {
|
|
t.Fatalf("NormalizeClaudeFingerprintProfile(%q) = (%q, %t), want (%q, %t)", tt.raw, got, ok, tt.want, tt.wantK)
|
|
}
|
|
errValidate := ValidateClaudeFingerprintProfile(tt.raw)
|
|
if (errValidate == nil) != tt.wantK {
|
|
t.Fatalf("ValidateClaudeFingerprintProfile(%q) error = %v, want error = %t", tt.raw, errValidate, !tt.wantK)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// An unrecognized value must survive sanitization: rewriting a config file is not
|
|
// the place to discard operator input, and the request path already falls back to
|
|
// the default profile.
|
|
func TestSanitizeClaudeKeysFingerprintProfile(t *testing.T) {
|
|
cfg := &Config{ClaudeKey: []ClaudeKey{
|
|
{APIKey: "a", FingerprintProfile: " OAuth-CLI "},
|
|
{APIKey: "b", FingerprintProfile: " claude-code "},
|
|
{APIKey: "c"},
|
|
}}
|
|
cfg.SanitizeClaudeKeys()
|
|
|
|
if got := cfg.ClaudeKey[0].FingerprintProfile; got != ClaudeFingerprintProfileClaudeCodeCLI {
|
|
t.Fatalf("recognized alias = %q, want %q", got, ClaudeFingerprintProfileClaudeCodeCLI)
|
|
}
|
|
if got := cfg.ClaudeKey[1].FingerprintProfile; got != "claude-code" {
|
|
t.Fatalf("unrecognized value = %q, want it preserved as written", got)
|
|
}
|
|
if got := cfg.ClaudeKey[2].FingerprintProfile; got != "" {
|
|
t.Fatalf("absent value = %q, want empty", got)
|
|
}
|
|
}
|