branchAccess.test.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /* @vitest-environment node */
  2. import { describe, it, expect } from "vitest";
  3. import { getBranchAccess, BRANCH_ACCESS } from "./branchAccess.js";
  4. describe("lib/frontend/rbac/branchAccess", () => {
  5. it("allows branch users only for their own branch", () => {
  6. const user = { userId: "u1", role: "branch", branchId: "NL01" };
  7. expect(getBranchAccess(user, "NL01")).toBe(BRANCH_ACCESS.ALLOWED);
  8. expect(getBranchAccess(user, "NL02")).toBe(BRANCH_ACCESS.FORBIDDEN);
  9. });
  10. it("allows admin-like users for any branch (admin/superadmin/dev)", () => {
  11. const admin = { userId: "u2", role: "admin", branchId: null };
  12. const superadmin = { userId: "u3", role: "superadmin", branchId: null };
  13. const dev = { userId: "u4", role: "dev", branchId: null };
  14. expect(getBranchAccess(admin, "NL01")).toBe(BRANCH_ACCESS.ALLOWED);
  15. expect(getBranchAccess(admin, "NL99")).toBe(BRANCH_ACCESS.ALLOWED);
  16. expect(getBranchAccess(superadmin, "NL01")).toBe(BRANCH_ACCESS.ALLOWED);
  17. expect(getBranchAccess(superadmin, "NL99")).toBe(BRANCH_ACCESS.ALLOWED);
  18. expect(getBranchAccess(dev, "NL01")).toBe(BRANCH_ACCESS.ALLOWED);
  19. expect(getBranchAccess(dev, "NL99")).toBe(BRANCH_ACCESS.ALLOWED);
  20. });
  21. it("denies unknown roles and missing data", () => {
  22. expect(getBranchAccess(null, "NL01")).toBe(BRANCH_ACCESS.FORBIDDEN);
  23. const weird = { userId: "u9", role: "user", branchId: "NL01" };
  24. expect(getBranchAccess(weird, "NL01")).toBe(BRANCH_ACCESS.FORBIDDEN);
  25. const branchNoId = { userId: "u1", role: "branch", branchId: null };
  26. expect(getBranchAccess(branchNoId, "NL01")).toBe(BRANCH_ACCESS.FORBIDDEN);
  27. });
  28. });