package ginext import ( "bytes" "io" "net/http" "net/http/httptest" "strings" "testing" "github.com/gin-gonic/gin" ) func TestBodyBuffer_WrapsBody(t *testing.T) { rec := httptest.NewRecorder() c, _ := gin.CreateTestContext(rec) c.Request = httptest.NewRequest(http.MethodPost, "/", strings.NewReader("payload")) original := c.Request.Body BodyBuffer(c) if c.Request.Body == original { t.Fatalf("expected body to be replaced with buffered reader") } data, err := io.ReadAll(c.Request.Body) if err != nil { t.Fatalf("read err: %v", err) } if !bytes.Equal(data, []byte("payload")) { t.Fatalf("body mismatch: %q", data) } } func TestBodyBuffer_NilBody(t *testing.T) { rec := httptest.NewRecorder() c, _ := gin.CreateTestContext(rec) c.Request = httptest.NewRequest(http.MethodGet, "/", nil) c.Request.Body = nil // Should not panic BodyBuffer(c) if c.Request.Body != nil { t.Fatalf("expected nil body to remain nil") } }