| package gemini | |
| import ( | |
| "encoding/json" | |
| "net/http" | |
| "net/http/httptest" | |
| "strings" | |
| "testing" | |
| ) | |
| type openAIProxyStub struct { | |
| status int | |
| body string | |
| } | |
| func (s openAIProxyStub) ChatCompletions(w http.ResponseWriter, _ *http.Request) { | |
| if s.status == 0 { | |
| s.status = http.StatusOK | |
| } | |
| w.Header().Set("Content-Type", "application/json") | |
| w.WriteHeader(s.status) | |
| _, _ = w.Write([]byte(s.body)) | |
| } | |
| func TestGeminiProxyViaOpenAIVercelReleasePassthrough(t *testing.T) { | |
| h := &Handler{OpenAI: openAIProxyStub{status: 200, body: `{"success":true}`}} | |
| req := httptest.NewRequest(http.MethodPost, "/v1beta/models/gemini-2.5-pro:streamGenerateContent?__stream_release=1", strings.NewReader(`{"lease_id":"lease_123"}`)) | |
| rec := httptest.NewRecorder() | |
| h.StreamGenerateContent(rec, req) | |
| if rec.Code != http.StatusOK { | |
| t.Fatalf("unexpected status: %d body=%s", rec.Code, rec.Body.String()) | |
| } | |
| var out map[string]any | |
| if err := json.Unmarshal(rec.Body.Bytes(), &out); err != nil { | |
| t.Fatalf("expected json response, got err=%v body=%s", err, rec.Body.String()) | |
| } | |
| if v, ok := out["success"].(bool); !ok || !v { | |
| t.Fatalf("expected success=true passthrough, got=%v", out) | |
| } | |
| } | |