From 2fb2c6939f2d4987fba8239c91806f4daf2201b0 Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 08:23:55 +0000 Subject: [PATCH] feat(api): expose swagger path in config snapshot Co-Authored-By: Virgil --- spec_builder_helper.go | 2 ++ spec_builder_helper_test.go | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/spec_builder_helper.go b/spec_builder_helper.go index 03a37e4..74004a9 100644 --- a/spec_builder_helper.go +++ b/spec_builder_helper.go @@ -17,6 +17,7 @@ import ( // cfg := api.SwaggerConfig{Title: "Service", Summary: "Public API"} type SwaggerConfig struct { Enabled bool + Path string Title string Summary string Description string @@ -89,6 +90,7 @@ func (e *Engine) SwaggerConfig() SwaggerConfig { return SwaggerConfig{ Enabled: e.swaggerEnabled, + Path: e.swaggerPath, Title: e.swaggerTitle, Summary: e.swaggerSummary, Description: e.swaggerDesc, diff --git a/spec_builder_helper_test.go b/spec_builder_helper_test.go index 3b6b413..77b372f 100644 --- a/spec_builder_helper_test.go +++ b/spec_builder_helper_test.go @@ -205,6 +205,9 @@ func TestEngine_Good_SwaggerConfigCarriesEngineMetadata(t *testing.T) { if !cfg.Enabled { t.Fatal("expected Swagger to be enabled") } + if cfg.Path != "" { + t.Fatalf("expected empty Swagger path when none is configured, got %q", cfg.Path) + } if cfg.Title != "Engine API" { t.Fatalf("expected title Engine API, got %q", cfg.Title) } @@ -240,6 +243,18 @@ func TestEngine_Good_SwaggerConfigCarriesEngineMetadata(t *testing.T) { t.Fatalf("expected second server to be /, got %q", cfg.Servers[1]) } + cfgWithPath, err := api.New( + api.WithSwagger("Engine API", "Engine metadata", "2.0.0"), + api.WithSwaggerPath("/docs"), + ) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + snap := cfgWithPath.SwaggerConfig() + if snap.Path != "/docs" { + t.Fatalf("expected Swagger path /docs, got %q", snap.Path) + } + apiKeyAuth, ok := cfg.SecuritySchemes["apiKeyAuth"].(map[string]any) if !ok { t.Fatal("expected apiKeyAuth security scheme in Swagger config")