修复 Gemini 兼容路由启动失败

This commit is contained in:
2026-06-27 21:46:57 +08:00
parent 88402f67d3
commit 41bb3a6525
3 changed files with 96 additions and 3 deletions
@@ -2,6 +2,65 @@ package httpapi
import "testing"
func TestGeminiGenerateContentModelFromPath(t *testing.T) {
tests := []struct {
name string
prefix string
requestPath string
wantModel string
wantOK bool
}{
{
name: "v1beta model",
prefix: "/v1beta/models/",
requestPath: "/v1beta/models/gemini-2.5-flash:generateContent",
wantModel: "gemini-2.5-flash",
wantOK: true,
},
{
name: "v1 model",
prefix: "/v1/models/",
requestPath: "/v1/models/gemini-compatible:generateContent",
wantModel: "gemini-compatible",
wantOK: true,
},
{
name: "bare model path",
prefix: "/models/",
requestPath: "/models/gemini-image:generateContent",
wantModel: "gemini-image",
wantOK: true,
},
{
name: "wrong suffix",
prefix: "/v1beta/models/",
requestPath: "/v1beta/models/gemini-2.5-flash:countTokens",
wantOK: false,
},
{
name: "missing model",
prefix: "/v1beta/models/",
requestPath: "/v1beta/models/:generateContent",
wantOK: false,
},
{
name: "extra path segment",
prefix: "/v1beta/models/",
requestPath: "/v1beta/models/group/gemini-2.5-flash:generateContent",
wantOK: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gotModel, gotOK := geminiGenerateContentModelFromPath(tt.prefix, tt.requestPath)
if gotOK != tt.wantOK || gotModel != tt.wantModel {
t.Fatalf("geminiGenerateContentModelFromPath() = %q, %v; want %q, %v", gotModel, gotOK, tt.wantModel, tt.wantOK)
}
})
}
}
func TestGeminiImageTaskBodyMapsTextOnlyToImageGenerate(t *testing.T) {
mapping, err := geminiImageTaskBody("gemini-image", map[string]any{
"contents": []any{