Masters-four-Tab-OpenAI / frontend /src /components /HealthStatusModal.test.tsx
Pete Dunn
Harden auth flows, scope user memory, and fix battery shortlist
8bcc42c
Raw
History Blame Contribute Delete
1.88 kB
import { render, screen, waitFor } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import HealthStatusModal from "./HealthStatusModal";
import { apiGetJson } from "../api/client";
vi.mock("../api/client", () => ({
apiGetJson: vi.fn(),
}));
describe("HealthStatusModal", () => {
it("shows authentication diagnostics from /api/health", async () => {
const mockedApiGetJson = vi.mocked(apiGetJson);
mockedApiGetJson.mockImplementation(async (url: string) => {
if (url.startsWith("/api/health")) {
return {
ok: false,
summary: { required_ok: 2, required_total: 3, total_checks: 3 },
checks: [],
env: {},
auth: {
required: true,
enabled: false,
issuer: "https://tenant.us.auth0.com/",
audience: "",
email_claim: "https://masterstelecom.com/email",
allowed_domains: ["masterstelecom.com", "verizon.com"],
config_error: "AUTH_REQUIRED is enabled but Auth0 config is invalid.",
config_details: ["Missing required auth setting: AUTH0_DOMAIN."],
config_warnings: ["AUTH0_JWKS_TTL_SECONDS is invalid ('x'); defaulting to 600 seconds."],
},
};
}
throw new Error("metrics unavailable");
});
render(<HealthStatusModal open onClose={() => {}} />);
await waitFor(() => {
expect(screen.getByText("Authentication")).toBeInTheDocument();
});
expect(screen.getByText("Auth required")).toBeInTheDocument();
expect(screen.getByText("Auth not enabled")).toBeInTheDocument();
expect(screen.getByText("Config details")).toBeInTheDocument();
expect(screen.getByText("Config warnings")).toBeInTheDocument();
expect(screen.getByText(/Missing required auth setting: AUTH0_DOMAIN/i)).toBeInTheDocument();
});
});