开放多项目大屏免登录访问
需求描述:/admin/display 需要无需管理员登录即可直接查看多项目公开运行状态。 实现思路:新增公开字段白名单接口与独立大屏页面,移除该路由的管理员会话依赖,同时保留 /api/admin/overview 的鉴权并补充隐私、路由和页面回归测试。 验证:Go 全量测试通过;前端 18 个测试文件共 59 项通过,TypeScript 检查通过。
This commit is contained in:
40
web/src/App.test.tsx
Normal file
40
web/src/App.test.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
import { render, screen } from "@testing-library/react";
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
const { authProvider } = vi.hoisted(() => ({
|
||||
authProvider: vi.fn(({ children }: { children: React.ReactNode }) => <>{children}</>),
|
||||
}));
|
||||
|
||||
vi.mock("./auth/AuthContext", () => ({
|
||||
AuthProvider: authProvider,
|
||||
useAuth: () => ({ user: null, loading: false }),
|
||||
}));
|
||||
vi.mock("./pages/PublicDisplayCenterPage", () => ({
|
||||
PublicDisplayCenterPage: () => <div>公开大屏页面</div>,
|
||||
}));
|
||||
vi.mock("./pages/AdminPage", () => ({ AdminPage: () => <div>管理页面</div> }));
|
||||
vi.mock("./pages/DisplayPage", () => ({ DisplayPage: () => <div>单项目公屏</div> }));
|
||||
vi.mock("./pages/HistoryPage", () => ({ HistoryPage: () => <div>历史页面</div> }));
|
||||
vi.mock("./pages/LoginPage", () => ({ LoginPage: () => <div>登录页面</div> }));
|
||||
vi.mock("./pages/StaffPage", () => ({ StaffPage: () => <div>员工页面</div> }));
|
||||
vi.mock("./pages/VisitorPage", () => ({ VisitorPage: () => <div>游客页面</div> }));
|
||||
vi.mock("./pages/VisitorLookupPage", () => ({ VisitorLookupPage: () => <div>游客查询</div> }));
|
||||
vi.mock("./pages/VisitorPhonePage", () => ({ VisitorPhonePage: () => <div>游客号码</div> }));
|
||||
|
||||
import { App } from "./App";
|
||||
|
||||
afterEach(() => {
|
||||
window.history.pushState({}, "", "/");
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe("App routes", () => {
|
||||
it("opens /admin/display without mounting administrator authentication", () => {
|
||||
window.history.pushState({}, "", "/admin/display");
|
||||
|
||||
render(<App />);
|
||||
|
||||
expect(screen.getByText("公开大屏页面")).toBeVisible();
|
||||
expect(authProvider).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user