diff --git a/context_test.go b/context_test.go index 41694585..5b53a6c9 100644 --- a/context_test.go +++ b/context_test.go @@ -2947,6 +2947,17 @@ func TestContextGetRawData(t *testing.T) { assert.Equal(t, "Fetch binary post data", string(data)) } +func TestContextGetRawDataNilBody(t *testing.T) { + c, _ := CreateTestContext(httptest.NewRecorder()) + c.Request, _ = http.NewRequest(http.MethodPost, "/", nil) + c.Request.Body = nil + + data, err := c.GetRawData() + require.Error(t, err) + assert.Nil(t, data) + assert.Equal(t, "cannot read nil body", err.Error()) +} + func TestContextRenderDataFromReader(t *testing.T) { w := httptest.NewRecorder() c, _ := CreateTestContext(w) @@ -3535,6 +3546,24 @@ func TestContextSetCookieData(t *testing.T) { setCookie := c.Writer.Header().Get("Set-Cookie") assert.Contains(t, setCookie, "SameSite=None") }) + + // Test that SameSiteDefaultMode is replaced with context's SameSite + t.Run("SameSiteDefaultMode is replaced with context SameSite", func(t *testing.T) { + c, _ := CreateTestContext(httptest.NewRecorder()) + c.SetSameSite(http.SameSiteLaxMode) + cookie := &http.Cookie{ + Name: "user", + Value: "gin", + Path: "/", + Domain: "localhost", + Secure: true, + HttpOnly: true, + SameSite: http.SameSiteDefaultMode, + } + c.SetCookieData(cookie) + setCookie := c.Writer.Header().Get("Set-Cookie") + assert.Contains(t, setCookie, "user=gin") + }) } func TestGetMapFromFormData(t *testing.T) { diff --git a/gin_test.go b/gin_test.go index a5ce3cd2..27639858 100644 --- a/gin_test.go +++ b/gin_test.go @@ -1138,3 +1138,16 @@ func TestServeErrorStatusMismatch(t *testing.T) { router.ServeHTTP(w, req) assert.Equal(t, http.StatusForbidden, w.Code) } + +func TestServeErrorMessageWrite(t *testing.T) { + router := New() + router.NoRoute(func(c *Context) { + c.Next() + }) + + w := httptest.NewRecorder() + req, _ := http.NewRequest(http.MethodGet, "/notfound", nil) + router.ServeHTTP(w, req) + assert.Equal(t, http.StatusNotFound, w.Code) + assert.Equal(t, "text/plain", w.Header().Get("Content-Type")) +}