53 lines
1.9 KiB
JavaScript
53 lines
1.9 KiB
JavaScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const sessionUserMock = vi.hoisted(() => ({
|
|
permissions: { value: [] },
|
|
user: { group_id: { value: null } },
|
|
canAccessSuperUser: () => sessionUserMock.permissions.value.includes("superuser"),
|
|
}));
|
|
|
|
vi.mock("@/components/session/token/SessionUser.vue", () => ({
|
|
SessionUser: sessionUserMock,
|
|
}));
|
|
|
|
import {
|
|
canManageCustomerRuleConfiguration,
|
|
canViewCustomerRuleConfiguration,
|
|
} from "@/features/customer/customerRuleConfigurationPermissions.js";
|
|
|
|
describe("customer rule configuration permissions", () => {
|
|
beforeEach(() => {
|
|
sessionUserMock.permissions.value = [];
|
|
sessionUserMock.user.group_id.value = null;
|
|
});
|
|
|
|
it("gives root superusers implicit view and manage access", () => {
|
|
sessionUserMock.permissions.value = ["superuser"];
|
|
sessionUserMock.user.group_id.value = 1;
|
|
|
|
expect(canViewCustomerRuleConfiguration()).toBe(true);
|
|
expect(canManageCustomerRuleConfiguration()).toBe(true);
|
|
});
|
|
|
|
it("keeps custom superuser view and manage permissions separate", () => {
|
|
sessionUserMock.permissions.value = ["superuser", "superuser_customer_rules_view"];
|
|
sessionUserMock.user.group_id.value = 2;
|
|
|
|
expect(canViewCustomerRuleConfiguration()).toBe(true);
|
|
expect(canManageCustomerRuleConfiguration()).toBe(false);
|
|
|
|
sessionUserMock.permissions.value.push("superuser_customer_rules_manage");
|
|
expect(canManageCustomerRuleConfiguration()).toBe(true);
|
|
});
|
|
|
|
it("denies custom superusers and non-superusers without an applicable node", () => {
|
|
sessionUserMock.permissions.value = ["superuser"];
|
|
sessionUserMock.user.group_id.value = 2;
|
|
expect(canViewCustomerRuleConfiguration()).toBe(false);
|
|
|
|
sessionUserMock.permissions.value = ["superuser_customer_rules_manage"];
|
|
expect(canViewCustomerRuleConfiguration()).toBe(false);
|
|
expect(canManageCustomerRuleConfiguration()).toBe(false);
|
|
});
|
|
});
|