Files
bifrost/core/providers/anthropic/errors_test.go
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

97 lines
2.0 KiB
Go

package anthropic
import (
"testing"
schemas "github.com/maximhq/bifrost/core/schemas"
)
func TestToAnthropicChatCompletionError(t *testing.T) {
strPtr := func(s string) *string { return &s }
tests := []struct {
name string
input *schemas.BifrostError
expectNil bool
expectedType string
}{
{
name: "nil BifrostError returns nil",
input: nil,
expectNil: true,
},
{
name: "nil ErrorField.Type defaults to api_error",
input: &schemas.BifrostError{
Error: &schemas.ErrorField{
Type: nil,
Message: "connection failed",
},
},
expectedType: "api_error",
},
{
name: "empty string Type defaults to api_error",
input: &schemas.BifrostError{
Error: &schemas.ErrorField{
Type: strPtr(""),
Message: "rate limited",
},
},
expectedType: "api_error",
},
{
name: "valid Type is preserved",
input: &schemas.BifrostError{
Error: &schemas.ErrorField{
Type: strPtr("rate_limit_error"),
Message: "rate limited",
},
},
expectedType: "rate_limit_error",
},
{
name: "internal Type is preserved",
input: &schemas.BifrostError{
Error: &schemas.ErrorField{
Type: strPtr("request_cancelled"),
Message: "cancelled",
},
},
expectedType: "request_cancelled",
},
{
name: "nil Error field defaults to api_error",
input: &schemas.BifrostError{
Error: nil,
},
expectedType: "api_error",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := ToAnthropicChatCompletionError(tt.input)
if tt.expectNil {
if result != nil {
t.Fatalf("expected nil, got %+v", result)
}
return
}
if result == nil {
t.Fatal("expected non-nil result")
}
if result.Type != "error" {
t.Errorf("expected top-level Type %q, got %q", "error", result.Type)
}
if result.Error.Type != tt.expectedType {
t.Errorf("expected error Type %q, got %q", tt.expectedType, result.Error.Type)
}
})
}
}