Files
Clintchiz a3ddd39b7b
Quality / quality (ubuntu-latest) (push) Failing after 14m38s
Quality / quality (windows-latest) (push) Canceled after 0s
feat: centralize application framework primitives
2026-08-22 23:07:46 +05:30

48 lines
1.5 KiB
TypeScript

import { expect, test } from "bun:test";
import { createPluginRunner } from "@wrnexus/plugin";
import { authzPlugin } from "../src/plugin.ts";
function runner() {
return createPluginRunner(authzPlugin(), {
root: process.cwd(),
mode: "development",
command: "dev",
metadata: new Map(),
warn() {},
});
}
test("authz plugin is inert until configured", async () => {
const instance = runner();
await instance.configure({});
const contributions = await instance.contributions();
expect(contributions.middleware).toEqual([]);
expect(contributions.migrations).toEqual([]);
});
test("database authz config contributes middleware and dialect migration", async () => {
const instance = runner();
const config: Record<string, unknown> = {
db: { driver: "postgres", url: "postgres://example" },
authz: {
store: "database",
middleware: true,
migrations: true,
defaultRoles: { signup: ["manager"] },
},
};
await instance.configure(config);
const contributions = await instance.contributions();
expect(contributions.middleware).toHaveLength(1);
expect(contributions.migrations).toHaveLength(1);
expect(contributions.migrations[0]?.source).toContain("SERIAL PRIMARY KEY");
expect(config.authz).toMatchObject({ strict: true });
});
test("database authz config refuses a missing database", async () => {
const instance = runner();
await expect(instance.configure({ authz: { store: "database" } })).rejects.toThrow(
"requires config.db",
);
});