From 4c1493744bb02a8b4fad7c3211aa551fcd4d3e15 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 14:44:29 +0000 Subject: [PATCH] Add request body size limit error test in routeAuthAndBody Added `TestHandler_bodyTooLarge_returns400` in `internal/refbackend/gemini/server_test.go` to cover the `http.StatusBadRequest` path in `routeAuthAndBody` when a request body exceeds the 10MB `maxBodyBytes` limit. Co-authored-by: matdev83 <211248003+matdev83@users.noreply.github.com> --- internal/refbackend/gemini/server_test.go | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/internal/refbackend/gemini/server_test.go b/internal/refbackend/gemini/server_test.go index 056c2f31..182e8796 100644 --- a/internal/refbackend/gemini/server_test.go +++ b/internal/refbackend/gemini/server_test.go @@ -1,6 +1,7 @@ package gemini_test import ( + "bytes" "context" "encoding/base64" "io" @@ -336,3 +337,34 @@ func TestHandler_forced429_streamPath_returnsJSONError(t *testing.T) { t.Fatalf("Content-Type: %q", ct) } } + +func TestHandler_bodyTooLarge_returns400(t *testing.T) { + t.Parallel() + srv := httptest.NewServer(refbackend.NewHandler(refbackend.Config{ + AllowMissingAPIKey: true, + })) + t.Cleanup(srv.Close) + + // maxBodyBytes is 10 MB, so send 10 MB + 1 byte + body := bytes.NewReader(make([]byte, 10<<20+1)) + req, err := http.NewRequest(http.MethodPost, srv.URL+geminiGenerateMinimalPath, body) + if err != nil { + t.Fatal(err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := http.DefaultClient.Do(req) + if err != nil { + t.Fatal(err) + } + defer func() { _ = resp.Body.Close() }() + + if resp.StatusCode != http.StatusBadRequest { + t.Fatalf("status: got %d, want %d", resp.StatusCode, http.StatusBadRequest) + } + + b, _ := io.ReadAll(resp.Body) + if !strings.Contains(string(b), "read body") { + t.Fatalf("body: %s", b) + } +}