import { screen, waitFor } from "@testing-library/react"; import { http, HttpResponse } from "msw"; import { expect, test } from "vitest"; import { Route, Routes, useLocation } from "react-router-dom"; import { server } from "../test/server"; import { renderApp } from "../test/render"; import { RequireAuth } from "./require-auth"; function LoginStub() { const location = useLocation(); return
login page {location.search}
; } function tree() { return ( } /> }> secret objects} /> ); } test("renders children when authenticated", async () => { renderApp(tree(), { route: "/objects" }); expect(await screen.findByText("secret objects")).toBeInTheDocument(); }); test("redirects unauthenticated users to /login carrying the attempted path", async () => { server.use(http.get("/api/admin/me", () => new HttpResponse(null, { status: 401 }))); renderApp(tree(), { route: "/objects" }); await waitFor(() => expect(screen.getByText(/from=%2Fobjects/)).toBeInTheDocument()); });