From dc128b72919a940ddbe2ad30687f7d2ad6cb9543 Mon Sep 17 00:00:00 2001 From: Raju Ahmed Date: Sun, 28 Dec 2025 17:52:39 +0600 Subject: [PATCH] test(context): add tests for multiple JSON and SSE writes in debug mode --- context_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/context_test.go b/context_test.go index 126646fc..af717a8b 100644 --- a/context_test.go +++ b/context_test.go @@ -1348,6 +1348,43 @@ func TestContextRenderNoContentData(t *testing.T) { assert.Equal(t, "text/csv", w.Header().Get("Content-Type")) } +// Test multiple JSON writes in debug mode +func TestContextRenderMultipleJSON(t *testing.T) { + w := httptest.NewRecorder() + c, _ := CreateTestContext(w) + + oldMode := os.Getenv("GIN_MODE") + defer os.Setenv("GIN_MODE", oldMode) + SetMode(DebugMode) + + output := captureOutput(t, func() { + c.JSON(http.StatusOK, H{"foo": "bar"}) + c.JSON(http.StatusOK, H{"baz": "qux"}) + }) + + assert.Equal(t, http.StatusOK, w.Code) + assert.Contains(t, output, "[WARNING] Response body already written") + assert.Contains(t, output, "status code 200") +} + +// Test multiple SSE writes in debug mode +func TestContextRenderMultipleSSE(t *testing.T) { + w := httptest.NewRecorder() + c, _ := CreateTestContext(w) + + oldMode := os.Getenv("GIN_MODE") + defer os.Setenv("GIN_MODE", oldMode) + SetMode(DebugMode) + + output := captureOutput(t, func() { + c.SSEvent("message", "test1") + c.SSEvent("message", "test2") + }) + + assert.Equal(t, http.StatusOK, w.Code) + assert.NotContains(t, output, "[WARNING] Response body already written") +} + func TestContextRenderSSE(t *testing.T) { w := httptest.NewRecorder() c, _ := CreateTestContext(w)