Home / Function/ TestContextSetCookieData() — gin Function Reference

TestContextSetCookieData() — gin Function Reference

Architecture documentation for the TestContextSetCookieData() function in context_test.go from the gin codebase.

Entity Profile

Relationship Graph

Source Code

context_test.go lines 3414–3538

func TestContextSetCookieData(t *testing.T) {
	c, _ := CreateTestContext(httptest.NewRecorder())
	c.SetSameSite(http.SameSiteLaxMode)
	var setCookie string

	// Basic cookie settings
	cookie := &http.Cookie{
		Name:     "user",
		Value:    "gin",
		MaxAge:   1,
		Path:     "/",
		Domain:   "localhost",
		Secure:   true,
		HttpOnly: true,
	}
	c.SetCookieData(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")
	// SameSite=Lax might be omitted in Go 1.24+ as it's the default
	// assert.Contains(t, setCookie, "SameSite=Lax")

	// Test that when Path is empty, "/" is automatically set
	cookie = &http.Cookie{
		Name:     "user",
		Value:    "gin",
		MaxAge:   1,
		Path:     "",
		Domain:   "localhost",
		Secure:   true,
		HttpOnly: true,
	}
	c.SetCookieData(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")
	// SameSite=Lax might be omitted in Go 1.24+ as it's the default
	// assert.Contains(t, setCookie, "SameSite=Lax")

	// Test additional cookie attributes (Expires)
	expireTime := time.Now().Add(24 * time.Hour)
	cookie = &http.Cookie{
		Name:     "user",
		Value:    "gin",
		Path:     "/",
		Domain:   "localhost",
		Expires:  expireTime,
		Secure:   true,
		HttpOnly: true,
	}
	c.SetCookieData(cookie)

	// Since the Expires value varies by time, partially verify with Contains
	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, "HttpOnly")
	assert.Contains(t, setCookie, "Secure")
	// SameSite=Lax might be omitted in Go 1.24+ as it's the default
	// assert.Contains(t, setCookie, "SameSite=Lax")

	// Test for Partitioned attribute (Go 1.18+)
	cookie = &http.Cookie{
		Name:        "user",
		Value:       "gin",
		Path:        "/",
		Domain:      "localhost",
		Secure:      true,
		HttpOnly:    true,
		Partitioned: true,
	}
	c.SetCookieData(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, "HttpOnly")
	assert.Contains(t, setCookie, "Secure")
	// SameSite=Lax might be omitted in Go 1.24+ as it's the default
	// assert.Contains(t, setCookie, "SameSite=Lax")
	// Not testing for Partitioned attribute as it may not be supported in all Go versions

	// Test that SameSiteStrictMode is explicitly included in the header
	t.Run("SameSite=Strict is included", func(t *testing.T) {
		c, _ := CreateTestContext(httptest.NewRecorder())
		cookie := &http.Cookie{
			Name:     "user",
			Value:    "gin",
			Path:     "/",
			Domain:   "localhost",
			Secure:   true,
			HttpOnly: true,
			SameSite: http.SameSiteStrictMode,
		}
		c.SetCookieData(cookie)
		setCookie := c.Writer.Header().Get("Set-Cookie")
		assert.Contains(t, setCookie, "SameSite=Strict")
	})

	// Test that SameSiteNoneMode is explicitly included in the header
	t.Run("SameSite=None is included", func(t *testing.T) {
		c, _ := CreateTestContext(httptest.NewRecorder())
		cookie := &http.Cookie{
			Name:     "user",
			Value:    "gin",
			Path:     "/",
			Domain:   "localhost",
			Secure:   true,
			HttpOnly: true,
			SameSite: http.SameSiteNoneMode,
		}
		c.SetCookieData(cookie)
		setCookie := c.Writer.Header().Get("Set-Cookie")
		assert.Contains(t, setCookie, "SameSite=None")
	})
}

Domain

Subdomains

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free