package middleware import ( "net/http" "net/http/httptest" "testing" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" ) func TestRequestID_GeneratesNew(t *testing.T) { r := gin.New() r.Use(RequestID()) r.GET("/test", func(c *gin.Context) { rid := RequestIDFromGin(c) assert.NotEmpty(t, rid) c.Status(http.StatusOK) }) w := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, "/test", nil) r.ServeHTTP(w, req) assert.Equal(t, http.StatusOK, w.Code) assert.NotEmpty(t, w.Header().Get(RequestIDHeader)) } func TestRequestID_UsesExisting(t *testing.T) { r := gin.New() r.Use(RequestID()) r.GET("/test", func(c *gin.Context) { c.Status(http.StatusOK) }) w := httptest.NewRecorder() req := httptest.NewRequest(http.MethodGet, "/test", nil) req.Header.Set(RequestIDHeader, "my-custom-rid") r.ServeHTTP(w, req) assert.Equal(t, http.StatusOK, w.Code) assert.Equal(t, "my-custom-rid", w.Header().Get(RequestIDHeader)) }