67 lines
1.8 KiB
Go
67 lines
1.8 KiB
Go
package service
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
)
|
|
|
|
func TestIsUpstreamModelNotFoundError(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
statusCode int
|
|
body []byte
|
|
want bool
|
|
}{
|
|
{
|
|
name: "404 model not found message",
|
|
statusCode: http.StatusNotFound,
|
|
body: []byte(`{"error":{"message":"model not found"}}`),
|
|
want: true,
|
|
},
|
|
{
|
|
name: "404 model_not_found code",
|
|
statusCode: http.StatusNotFound,
|
|
body: []byte(`{"error":{"code":"model_not_found","message":"The requested model was not found"}}`),
|
|
want: true,
|
|
},
|
|
{
|
|
name: "404 unknown model message",
|
|
statusCode: http.StatusNotFound,
|
|
body: []byte(`{"error":{"message":"unknown model gpt-5.4"}}`),
|
|
want: true,
|
|
},
|
|
{
|
|
name: "404 endpoint not found is not model specific",
|
|
statusCode: http.StatusNotFound,
|
|
body: []byte(`{"error":{"message":"endpoint not found"}}`),
|
|
want: false,
|
|
},
|
|
{
|
|
name: "404 arbitrary body is not model specific",
|
|
statusCode: http.StatusNotFound,
|
|
body: []byte(`404 page not found`),
|
|
want: false,
|
|
},
|
|
{
|
|
name: "non 404 does not match",
|
|
statusCode: http.StatusBadRequest,
|
|
body: []byte(`{"error":{"message":"model not found"}}`),
|
|
want: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := isUpstreamModelNotFoundError(tt.statusCode, tt.body); got != tt.want {
|
|
t.Fatalf("isUpstreamModelNotFoundError() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestAntigravityModelNotFoundKeepsBare404Fallback(t *testing.T) {
|
|
if !isModelNotFoundError(http.StatusNotFound, []byte(`endpoint not found`)) {
|
|
t.Fatal("antigravity model-not-found helper should keep bare 404 fallback")
|
|
}
|
|
}
|