40 lines
1.6 KiB
TypeScript
40 lines
1.6 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { builtinDevToolbarPanels } from "../src/server/builtin-panels.ts";
|
|
|
|
test("built-in providers expose bounded operational data without environment secrets", () => {
|
|
const root = mkdtempSync(join(tmpdir(), "wrnexus-toolbar-providers-"));
|
|
try {
|
|
mkdirSync(join(root, "app", "queues"), { recursive: true });
|
|
mkdirSync(join(root, "app", "locales"), { recursive: true });
|
|
writeFileSync(join(root, "app", "queues", "email.ts"), "export default {};\n");
|
|
writeFileSync(
|
|
join(root, "app", "locales", "en.json"),
|
|
JSON.stringify({ hello: "Hello", bye: "Bye" }),
|
|
);
|
|
writeFileSync(join(root, "app", "locales", "fr.json"), JSON.stringify({ hello: "Bonjour" }));
|
|
const panels = builtinDevToolbarPanels({
|
|
root,
|
|
platform: { routes: { pages: 1, api: 2, realtime: 3 } },
|
|
database: { queries: [{ durationMs: 120 }], issues: [{ code: "SLOW" }] },
|
|
version: { current: "1.0.0", latest: "1.1.0" },
|
|
});
|
|
expect(panels.map((panel) => panel.id)).toEqual([
|
|
"database",
|
|
"queues",
|
|
"realtime",
|
|
"translations",
|
|
"css",
|
|
"performance",
|
|
"upgrades",
|
|
]);
|
|
expect(panels.find((panel) => panel.id === "queues")?.badge).toBe(1);
|
|
expect(panels.find((panel) => panel.id === "translations")?.badge).toBe(1);
|
|
expect(JSON.stringify(panels)).not.toContain("process.env");
|
|
} finally {
|
|
rmSync(root, { recursive: true, force: true });
|
|
}
|
|
});
|