import { act } from "react"; import { createRoot, type Root } from "react-dom/client"; import { MemoryRouter, Route, Routes, useLocation } from "react-router-dom"; import { afterEach, describe, expect, it, vi } from "vitest"; import AuthGuard from "./AuthGuard"; const authState = { isAuthenticated: false, isLoading: false, activeNavigator: undefined as string | undefined, error: undefined as Error | undefined, removeUser: vi.fn(), }; vi.mock("react-oidc-context", () => ({ useAuth: () => authState, })); function LocationProbe() { const location = useLocation(); return (
{location.pathname} {location.search}
); } function renderGuard(initialEntry: string) { const container = document.createElement("div"); document.body.appendChild(container); const root = createRoot(container); act(() => { root.render( }> picker} /> } /> , ); }); return { container, root }; } function cleanupRendered(container: HTMLDivElement, root: Root) { act(() => { root.unmount(); }); container.remove(); } describe("OrgFront AuthGuard auto login redirects", () => { afterEach(() => { vi.clearAllMocks(); authState.isAuthenticated = false; authState.isLoading = false; authState.activeNavigator = undefined; authState.error = undefined; window.localStorage.clear(); }); it("redirects protected picker entry to the auto login URL", () => { const rendered = renderGuard( "/embed/picker?mode=single&select=tenant&tenantId=hanmac-family-id", ); expect(rendered.container.textContent).toBe( "/login?auto=1&returnTo=%2Fembed%2Fpicker%3Fmode%3Dsingle%26select%3Dtenant%26tenantId%3Dhanmac-family-id", ); cleanupRendered(rendered.container, rendered.root); }); });