package api import ( "encoding/json" "net/http" "net/http/httptest" "strings" "testing" ) func TestServeOpenAPIJSON(t *testing.T) { s := &Server{} r := s.Router() req := httptest.NewRequest(http.MethodGet, "/api/v1/openapi.json", nil) w := httptest.NewRecorder() r.ServeHTTP(w, req) if w.Code != http.StatusOK { t.Fatalf("status %d: %s", w.Code, w.Body.String()) } if ct := w.Header().Get("Content-Type"); !strings.Contains(ct, "application/json") { t.Fatalf("content-type: %s", ct) } var doc map[string]any if err := json.Unmarshal(w.Body.Bytes(), &doc); err != nil { t.Fatal(err) } if doc["openapi"] != "3.0.3" { t.Fatalf("unexpected openapi version: %v", doc["openapi"]) } } func TestServeOpenAPIDocs(t *testing.T) { s := &Server{} r := s.Router() req := httptest.NewRequest(http.MethodGet, "/api/docs", nil) w := httptest.NewRecorder() r.ServeHTTP(w, req) if w.Code != http.StatusOK { t.Fatalf("status %d", w.Code) } if !strings.Contains(w.Body.String(), "swagger-ui") { t.Fatal("expected swagger ui html") } }