first commit
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNormalizeProtocol(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
in string
|
||||
want string
|
||||
wantErr bool
|
||||
}{
|
||||
{"empty stays empty", "", "", false},
|
||||
{"openai", "openai", ProtocolOpenAI, false},
|
||||
{"openai/chat aliases openai", "openai/chat", ProtocolOpenAI, false},
|
||||
{"openai/resp_api distinct", "openai/resp_api", ProtocolOpenAIResponses, false},
|
||||
{"anthropic unchanged", "anthropic", ProtocolAnthropic, false},
|
||||
{"case-insensitive", "OpenAI/Resp_API", ProtocolOpenAIResponses, false},
|
||||
{"trimmed", " openai/chat ", ProtocolOpenAI, false},
|
||||
{"unknown rejected", "openai/foo", "", true},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
got, err := NormalizeProtocol(tc.in)
|
||||
if tc.wantErr {
|
||||
if err == nil {
|
||||
t.Fatalf("NormalizeProtocol(%q) = %q, want error", tc.in, got)
|
||||
}
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatalf("NormalizeProtocol(%q) unexpected error: %v", tc.in, err)
|
||||
}
|
||||
if got != tc.want {
|
||||
t.Errorf("NormalizeProtocol(%q) = %q, want %q", tc.in, got, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// The rejection message must name every accepted value so a user with a typo
|
||||
// can self-correct without reading source.
|
||||
func TestNormalizeProtocolErrorNamesAcceptedValues(t *testing.T) {
|
||||
_, err := NormalizeProtocol("openai/foo")
|
||||
if err == nil {
|
||||
t.Fatal("expected error for unknown protocol")
|
||||
}
|
||||
for _, want := range []string{"openai", "openai/chat", "openai/resp_api", "anthropic"} {
|
||||
if !strings.Contains(err.Error(), want) {
|
||||
t.Errorf("error %q missing accepted value %q", err.Error(), want)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user