46 lines
959 B
Go
46 lines
959 B
Go
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")
|
|
}
|
|
}
|