diff --git a/internal/logging/gin_logger.go b/internal/logging/gin_logger.go index 80821376..605824aa 100644 --- a/internal/logging/gin_logger.go +++ b/internal/logging/gin_logger.go @@ -26,6 +26,7 @@ var aiAPIPrefixes = []string{ "/v1/responses", "/v1beta/models/", "/api/provider/", + "/backend-api/codex", } const ( diff --git a/internal/logging/gin_logger_test.go b/internal/logging/gin_logger_test.go index 73480dec..cda806a4 100644 --- a/internal/logging/gin_logger_test.go +++ b/internal/logging/gin_logger_test.go @@ -73,3 +73,44 @@ func TestIsAIAPIPathIncludesImages(t *testing.T) { t.Fatalf("expected /v1/videos/video_123 to be treated as AI API path") } } + +func TestIsAIAPIPathIncludesCodexBackend(t *testing.T) { + paths := []string{ + "/backend-api/codex/responses", + "/backend-api/codex/responses/compact", + } + for _, path := range paths { + if !isAIAPIPath(path) { + t.Fatalf("expected %s to be treated as AI API path", path) + } + } +} + +func TestGinLogrusLoggerAddsRequestIDForCodexBackend(t *testing.T) { + gin.SetMode(gin.TestMode) + + engine := gin.New() + engine.Use(GinLogrusLogger()) + + var requestIDFromContext string + var requestIDFromGin string + engine.POST("/backend-api/codex/responses", func(c *gin.Context) { + requestIDFromContext = GetRequestID(c.Request.Context()) + requestIDFromGin = GetGinRequestID(c) + c.Status(http.StatusOK) + }) + + req := httptest.NewRequest(http.MethodPost, "/backend-api/codex/responses", nil) + recorder := httptest.NewRecorder() + engine.ServeHTTP(recorder, req) + + if recorder.Code != http.StatusOK { + t.Fatalf("expected 200, got %d", recorder.Code) + } + if requestIDFromContext == "" { + t.Fatalf("expected request ID in request context") + } + if requestIDFromGin != requestIDFromContext { + t.Fatalf("expected Gin request ID %q to match context request ID %q", requestIDFromGin, requestIDFromContext) + } +}