Files
pleno-vue/tests/unit/customer-rule-configuration-permissions.spec.js

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);
});
});