43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
hasExplicitBookingCountPermission,
|
|
isExpectedBookingCountRequestFailure,
|
|
} from "@/components/models/navigation/items/bookingCountGuards.js";
|
|
|
|
describe("booking count navigation guards", () => {
|
|
it("requires explicit booking permissions instead of superuser shell access", () => {
|
|
expect(
|
|
hasExplicitBookingCountPermission({
|
|
permissions: {
|
|
value: ["superuser"],
|
|
},
|
|
})
|
|
).toBe(false);
|
|
|
|
expect(
|
|
hasExplicitBookingCountPermission({
|
|
permissions: {
|
|
value: ["superuser", "list_bookings"],
|
|
},
|
|
})
|
|
).toBe(true);
|
|
|
|
expect(
|
|
hasExplicitBookingCountPermission({
|
|
permissions: {
|
|
value: ["admin", "list_own_bookings"],
|
|
},
|
|
})
|
|
).toBe(true);
|
|
});
|
|
|
|
it("treats expected unavailable or forbidden count responses as quiet fallbacks", () => {
|
|
expect(isExpectedBookingCountRequestFailure({ response: { status: 401 } })).toBe(true);
|
|
expect(isExpectedBookingCountRequestFailure({ response: { status: 403 } })).toBe(true);
|
|
expect(isExpectedBookingCountRequestFailure({ response: { status: 404 } })).toBe(true);
|
|
expect(isExpectedBookingCountRequestFailure({ response: { status: 500 } })).toBe(false);
|
|
expect(isExpectedBookingCountRequestFailure(new Error("Network Error"))).toBe(false);
|
|
});
|
|
});
|