34 lines
818 B
TypeScript
34 lines
818 B
TypeScript
|
|
import { describe, expect, it } from "vitest";
|
||
|
|
|
||
|
|
import { permissions } from "@mrp/shared";
|
||
|
|
|
||
|
|
import { requirePermissions } from "../src/lib/rbac.js";
|
||
|
|
|
||
|
|
describe("rbac", () => {
|
||
|
|
it("allows requests with all required permissions", () => {
|
||
|
|
const middleware = requirePermissions([permissions.companyRead]);
|
||
|
|
const request = {
|
||
|
|
authUser: {
|
||
|
|
id: "1",
|
||
|
|
email: "admin@example.com",
|
||
|
|
firstName: "Admin",
|
||
|
|
lastName: "User",
|
||
|
|
roles: ["Administrator"],
|
||
|
|
permissions: [permissions.companyRead],
|
||
|
|
},
|
||
|
|
};
|
||
|
|
const response = {
|
||
|
|
status: () => response,
|
||
|
|
json: (body: unknown) => body,
|
||
|
|
};
|
||
|
|
let nextCalled = false;
|
||
|
|
|
||
|
|
middleware(request as never, response as never, () => {
|
||
|
|
nextCalled = true;
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(nextCalled).toBe(true);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|