diff --git a/context.go b/context.go
index a00d1e5538..92fb3704f9 100644
--- a/context.go
+++ b/context.go
@@ -1056,6 +1056,7 @@ func (c *Context) requestHeader(key string) string {
/************************************/
// bodyAllowedForStatus is a copy of http.bodyAllowedForStatus non-exported function.
+// Uses http.StatusContinue constant for better code clarity.
func bodyAllowedForStatus(status int) bool {
switch {
case status >= http.StatusContinue && status < http.StatusOK:
diff --git a/context_test.go b/context_test.go
index 416945857f..5df0be78c7 100644
--- a/context_test.go
+++ b/context_test.go
@@ -1031,6 +1031,7 @@ func TestContextGetCookie(t *testing.T) {
}
func TestContextBodyAllowedForStatus(t *testing.T) {
+ assert.False(t, bodyAllowedForStatus(http.StatusContinue))
assert.False(t, bodyAllowedForStatus(http.StatusProcessing))
assert.False(t, bodyAllowedForStatus(http.StatusNoContent))
assert.False(t, bodyAllowedForStatus(http.StatusNotModified))
@@ -2947,6 +2948,16 @@ 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)
+
+ data, err := c.GetRawData()
+ assert.Nil(t, data)
+ require.Error(t, err)
+ 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 inherits from context's sameSite
+ t.Run("SameSiteDefaultMode inherits context sameSite", func(t *testing.T) {
+ c, _ := CreateTestContext(httptest.NewRecorder())
+ c.SetSameSite(http.SameSiteStrictMode)
+ 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, "SameSite=Strict")
+ })
}
func TestGetMapFromFormData(t *testing.T) {
diff --git a/logger_test.go b/logger_test.go
index 53d0df953b..e2827bfbbf 100644
--- a/logger_test.go
+++ b/logger_test.go
@@ -318,20 +318,21 @@ func TestColorForStatus(t *testing.T) {
}
func TestColorForLatency(t *testing.T) {
- colorForLantency := func(latency time.Duration) string {
+ colorForLatency := func(latency time.Duration) string {
p := LogFormatterParams{
Latency: latency,
}
return p.LatencyColor()
}
- assert.Equal(t, white, colorForLantency(time.Duration(0)), "0 should be white")
- assert.Equal(t, white, colorForLantency(time.Millisecond*20), "20ms should be white")
- assert.Equal(t, green, colorForLantency(time.Millisecond*150), "150ms should be green")
- assert.Equal(t, cyan, colorForLantency(time.Millisecond*250), "250ms should be cyan")
- assert.Equal(t, yellow, colorForLantency(time.Millisecond*600), "600ms should be yellow")
- assert.Equal(t, magenta, colorForLantency(time.Millisecond*1500), "1.5s should be magenta")
- assert.Equal(t, red, colorForLantency(time.Second*3), "other things should be red")
+ assert.Equal(t, white, colorForLatency(time.Duration(0)), "0 should be white")
+ assert.Equal(t, white, colorForLatency(time.Millisecond*20), "20ms should be white")
+ assert.Equal(t, green, colorForLatency(time.Millisecond*150), "150ms should be green")
+ assert.Equal(t, cyan, colorForLatency(time.Millisecond*250), "250ms should be cyan")
+ assert.Equal(t, blue, colorForLatency(time.Millisecond*400), "400ms should be blue")
+ assert.Equal(t, yellow, colorForLatency(time.Millisecond*600), "600ms should be yellow")
+ assert.Equal(t, magenta, colorForLatency(time.Millisecond*1500), "1.5s should be magenta")
+ assert.Equal(t, red, colorForLatency(time.Second*3), "other things should be red")
}
func TestResetColor(t *testing.T) {
diff --git a/utils_test.go b/utils_test.go
index 893ebc8898..e1f2c33257 100644
--- a/utils_test.go
+++ b/utils_test.go
@@ -13,6 +13,7 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func init() {
@@ -145,6 +146,17 @@ func TestMarshalXMLforH(t *testing.T) {
assert.Error(t, e)
}
+func TestMarshalXMLforHSuccess(t *testing.T) {
+ h := H{
+ "key1": "value1",
+ "key2": 123,
+ }
+ data, err := xml.Marshal(h)
+ require.NoError(t, err)
+ assert.Contains(t, string(data), "value1")
+ assert.Contains(t, string(data), "123")
+}
+
func TestIsASCII(t *testing.T) {
assert.True(t, isASCII("test"))
assert.False(t, isASCII("๐งก๐๐๐๐"))