33 lines
836 B
TypeScript
33 lines
836 B
TypeScript
import { expect, it, vi } from "vitest";
|
|
|
|
const mocks = vi.hoisted(() => ({ read: vi.fn(), access: vi.fn() }));
|
|
vi.mock("@/lib/permissions", () => ({
|
|
getAdminContext: async () => ({
|
|
session: { user: { rank: 1 } },
|
|
permissions: {},
|
|
}),
|
|
canAccess: mocks.access,
|
|
PERMS: { DEVOPS_VIEW: "devops.view" },
|
|
}));
|
|
vi.mock("next/navigation", () => ({
|
|
redirect: () => {
|
|
throw new Error("redirect");
|
|
},
|
|
}));
|
|
vi.mock("@/lib/error-monitor", () => ({
|
|
ErrorStore: class {
|
|
read = mocks.read;
|
|
},
|
|
}));
|
|
vi.mock("@/components/link", () => ({ default: () => null }));
|
|
|
|
import Page from "./page";
|
|
|
|
it("rejects access before reading diagnostic data", async () => {
|
|
mocks.access.mockReturnValue(false);
|
|
await expect(Page({ searchParams: Promise.resolve({}) })).rejects.toThrow(
|
|
"redirect",
|
|
);
|
|
expect(mocks.read).not.toHaveBeenCalled();
|
|
});
|