feat(context): add SetCookieStruct (#4215)

This commit is contained in:
Rikiya Narita 2025-05-20 23:48:15 +09:00
parent f348e695ed
commit cc76014ea3

View File

@ -3127,6 +3127,7 @@ func TestContextNext(t *testing.T) {
func TestContextSetCookieStruct(t *testing.T) { func TestContextSetCookieStruct(t *testing.T) {
c, _ := CreateTestContext(httptest.NewRecorder()) c, _ := CreateTestContext(httptest.NewRecorder())
c.SetSameSite(http.SameSiteLaxMode) c.SetSameSite(http.SameSiteLaxMode)
var setCookie string
// Basic cookie settings // Basic cookie settings
cookie := &http.Cookie{ cookie := &http.Cookie{
@ -3139,7 +3140,14 @@ func TestContextSetCookieStruct(t *testing.T) {
HttpOnly: true, HttpOnly: true,
} }
c.SetCookieStruct(cookie) c.SetCookieStruct(cookie)
assert.Equal(t, "user=gin; Path=/; Domain=localhost; Max-Age=1; HttpOnly; Secure; SameSite=Lax", c.Writer.Header().Get("Set-Cookie")) setCookie = c.Writer.Header().Get("Set-Cookie")
assert.Contains(t, setCookie, "user=gin")
assert.Contains(t, setCookie, "Path=/")
assert.Contains(t, setCookie, "Domain=localhost")
assert.Contains(t, setCookie, "Max-Age=1")
assert.Contains(t, setCookie, "HttpOnly")
assert.Contains(t, setCookie, "Secure")
assert.Contains(t, setCookie, "SameSite=Lax")
// Test that when Path is empty, "/" is automatically set // Test that when Path is empty, "/" is automatically set
cookie = &http.Cookie{ cookie = &http.Cookie{
@ -3152,7 +3160,14 @@ func TestContextSetCookieStruct(t *testing.T) {
HttpOnly: true, HttpOnly: true,
} }
c.SetCookieStruct(cookie) c.SetCookieStruct(cookie)
assert.Equal(t, "user=gin; Path=/; Domain=localhost; Max-Age=1; HttpOnly; Secure; SameSite=Lax", c.Writer.Header().Get("Set-Cookie")) setCookie = c.Writer.Header().Get("Set-Cookie")
assert.Contains(t, setCookie, "user=gin")
assert.Contains(t, setCookie, "Path=/")
assert.Contains(t, setCookie, "Domain=localhost")
assert.Contains(t, setCookie, "Max-Age=1")
assert.Contains(t, setCookie, "HttpOnly")
assert.Contains(t, setCookie, "Secure")
assert.Contains(t, setCookie, "SameSite=Lax")
// Test additional cookie attributes (Expires) // Test additional cookie attributes (Expires)
expireTime := time.Now().Add(24 * time.Hour) expireTime := time.Now().Add(24 * time.Hour)
@ -3168,7 +3183,7 @@ func TestContextSetCookieStruct(t *testing.T) {
c.SetCookieStruct(cookie) c.SetCookieStruct(cookie)
// Since the Expires value varies by time, partially verify with Contains // Since the Expires value varies by time, partially verify with Contains
setCookie := c.Writer.Header().Get("Set-Cookie") setCookie = c.Writer.Header().Get("Set-Cookie")
assert.Contains(t, setCookie, "user=gin") assert.Contains(t, setCookie, "user=gin")
assert.Contains(t, setCookie, "Path=/") assert.Contains(t, setCookie, "Path=/")
assert.Contains(t, setCookie, "Domain=localhost") assert.Contains(t, setCookie, "Domain=localhost")