package server import ( "encoding/json" "io" "log/slog" "net/http" "net/http/httptest" "os" "testing" "gitea.meghsakha.com/platform/tenant-registry/internal/config" ) func newTestServer(t *testing.T) *httptest.Server { t.Helper() cfg := &config.Config{Env: "dev", Addr: ":0"} h := NewRouter(cfg, slog.New(slog.NewTextHandler(os.Stderr, nil))) return httptest.NewServer(h) } func TestHealthz(t *testing.T) { srv := newTestServer(t) defer srv.Close() resp, err := http.Get(srv.URL + "/healthz") if err != nil { t.Fatal(err) } defer func() { _ = resp.Body.Close() }() if resp.StatusCode != http.StatusOK { t.Fatalf("got %d, want 200", resp.StatusCode) } } func TestTenantBySlug_acme(t *testing.T) { srv := newTestServer(t) defer srv.Close() resp, err := http.Get(srv.URL + "/v1/tenants/by-slug/acme") if err != nil { t.Fatal(err) } defer func() { _ = resp.Body.Close() }() if resp.StatusCode != http.StatusOK { body, _ := io.ReadAll(resp.Body) t.Fatalf("got %d, want 200; body=%s", resp.StatusCode, body) } var payload map[string]any if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil { t.Fatal(err) } if payload["slug"] != "acme" { t.Fatalf("expected slug=acme, got %v", payload["slug"]) } if payload["status"] != "active" { t.Fatalf("expected status=active, got %v", payload["status"]) } } func TestTenantBySlug_unknown(t *testing.T) { srv := newTestServer(t) defer srv.Close() resp, err := http.Get(srv.URL + "/v1/tenants/by-slug/nope") if err != nil { t.Fatal(err) } defer func() { _ = resp.Body.Close() }() if resp.StatusCode != http.StatusNotFound { t.Fatalf("got %d, want 404", resp.StatusCode) } }