import { render, screen, waitFor } from "@testing-library/react"; import axios from "axios"; import { MemoryRouter } from "react-router-dom"; import { describe, expect, it, vi } from "vitest"; import { AuthProvider, useAuth } from "./AuthContext"; const Probe = () => { const { loading, authEnabled } = useAuth(); return (
{String(loading)} {String(authEnabled)}
); }; describe("AuthProvider", () => { it("defaults to auth-enabled mode if /auth/status fails", async () => { const storage = new Map(); Object.defineProperty(window, "localStorage", { configurable: true, value: { getItem: (key: string) => storage.get(key) ?? null, setItem: (key: string, value: string) => { storage.set(key, value); }, removeItem: (key: string) => { storage.delete(key); }, }, }); vi.spyOn(axios, "get").mockRejectedValueOnce(new Error("network down")); render( ); await waitFor(() => { expect(screen.getByTestId("loading").textContent).toBe("false"); }); expect(screen.getByTestId("auth-enabled").textContent).toBe("true"); }); });