package middleware import ( "net/http" "net/http/httptest" "testing" "github.com/QuantumNous/new-api/common" "github.com/gin-gonic/gin" "github.com/stretchr/testify/require" ) func TestDisableCacheSetsNoCacheHeaders(t *testing.T) { gin.SetMode(gin.TestMode) router := gin.New() router.Use(DisableCache()) router.GET("/", func(c *gin.Context) { c.Status(http.StatusNoContent) }) response := httptest.NewRecorder() router.ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/", nil)) require.Equal(t, http.StatusNoContent, response.Code) require.Equal(t, "no-store, no-cache, must-revalidate, private, max-age=0", response.Header().Get("Cache-Control")) require.Equal(t, "no-cache", response.Header().Get("Pragma")) require.Equal(t, "0", response.Header().Get("Expires")) } func TestRequestIdPropagatesSameIDToContextAndResponse(t *testing.T) { gin.SetMode(gin.TestMode) router := gin.New() router.Use(RequestId()) router.GET("/", func(c *gin.Context) { id := c.GetString(common.RequestIdKey) require.NotEmpty(t, id) require.Equal(t, id, c.Request.Context().Value(common.RequestIdKey)) c.Status(http.StatusNoContent) }) response := httptest.NewRecorder() router.ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/", nil)) require.Equal(t, http.StatusNoContent, response.Code) require.NotEmpty(t, response.Header().Get(common.RequestIdKey)) }