fix(handler): fallback known gemini models on v1beta 404

This commit is contained in:
YanzheL
2026-04-01 02:20:13 +08:00
parent 4514f3fc11
commit 649afef512
2 changed files with 37 additions and 1 deletions

View File

@@ -3,6 +3,7 @@
package handler
import (
"net/http"
"testing"
"github.com/Wei-Shaw/sub2api/internal/service"
@@ -141,3 +142,28 @@ func TestGeminiV1BetaHandler_GetModelAntigravityFallback(t *testing.T) {
})
}
}
func TestShouldFallbackGeminiModel_KnownFallbackOn404(t *testing.T) {
t.Parallel()
res := &service.UpstreamHTTPResult{StatusCode: http.StatusNotFound}
require.True(t, shouldFallbackGeminiModel("gemini-3.1-pro-preview-customtools", res))
}
func TestShouldFallbackGeminiModel_UnknownModelOn404(t *testing.T) {
t.Parallel()
res := &service.UpstreamHTTPResult{StatusCode: http.StatusNotFound}
require.False(t, shouldFallbackGeminiModel("gemini-future-model", res))
}
func TestShouldFallbackGeminiModel_DelegatesScopeFallback(t *testing.T) {
t.Parallel()
res := &service.UpstreamHTTPResult{
StatusCode: http.StatusForbidden,
Headers: http.Header{"Www-Authenticate": []string{"Bearer error=\"insufficient_scope\""}},
Body: []byte("insufficient authentication scopes"),
}
require.True(t, shouldFallbackGeminiModel("gemini-future-model", res))
}