Files
pleno-vue/tests/unit/session-storage.spec.js

38 lines
1.5 KiB
JavaScript

// @vitest-environment jsdom
import { describe, expect, it } from "vitest";
import { normalizeStoredCustomerNumber, storeSessionToken } from "@/services/sessionStorage.js";
describe("session storage helpers", () => {
it("stores subuser QR session context with the selected customer number", () => {
const stored = storeSessionToken("subuser-qr-token", {
isSubuser: true,
selectedCustomerNumber: "12345678",
});
expect(stored).toBe(true);
expect(localStorage.getItem("token")).toBe("subuser-qr-token");
expect(localStorage.getItem("is_subuser")).toBe("true");
expect(localStorage.getItem("selected_customer_number")).toBe("12345678");
});
it("clears stale subuser context for normal QR session tokens", () => {
localStorage.setItem("is_subuser", "true");
localStorage.setItem("selected_customer_number", "12345678");
const stored = storeSessionToken("customer-qr-token");
expect(stored).toBe(true);
expect(localStorage.getItem("token")).toBe("customer-qr-token");
expect(localStorage.getItem("is_subuser")).toBeNull();
expect(localStorage.getItem("selected_customer_number")).toBeNull();
});
it("rejects non-positive or mixed customer number values", () => {
expect(normalizeStoredCustomerNumber("12345678")).toBe(12345678);
expect(normalizeStoredCustomerNumber("0")).toBeNull();
expect(normalizeStoredCustomerNumber("123abc")).toBeNull();
expect(normalizeStoredCustomerNumber("")).toBeNull();
});
});