import { describe, expect, it } from "vitest"; import { buildOacCaseCookie, OAC_CASE_COOKIE, parseOacCase, } from "@/utils/user"; /** ตัวอย่าง cookie จริงจากระบบ e-Court (เก็บใน test เพื่อล็อก format ของจริง) */ const REAL_OAC_CASE = "u_userid=235821&u_userlogin=tu_2&u_courtid=4&u_password=&u_AdminStatus=&u_perCardNo=5000000000006&u_perCardNoEncript=1800650010005002003&u_userType=4&u_CidAuthen=NNNENNNNNNNNNNNNNNNN&u_hSecId=NNNNNNNNNNNNNNNNNNNN&u_username=&u_courtName=&u_AuditID=1995227&u_PsGroupNum=1&u_PsGroup=11&u_PsGroupName="; describe("parseOacCase", () => { it("cookie e-Court จริง → identity จาก u_userid/u_userlogin", () => { expect(parseOacCase(REAL_OAC_CASE)).toEqual({ userId: "235821", userName: "tu_2", }); }); it("ค่าจาก buildOacCaseCookie อ่านกลับได้ (round-trip ค่า mock login จริง user1)", () => { expect(parseOacCase(buildOacCaseCookie("user1", "user1"))).toEqual({ userId: "user1", userName: "user1", }); }); it("ค่าเสีย/ว่าง/ขาด field → null (ถือว่ายังไม่เข้าสู่ระบบ)", () => { expect(parseOacCase(null)).toBeNull(); expect(parseOacCase(undefined)).toBeNull(); expect(parseOacCase("")).toBeNull(); expect(parseOacCase("garbage")).toBeNull(); expect(parseOacCase("u_userlogin=user_x")).toBeNull(); // ขาด u_userid expect(parseOacCase("u_userid=123&u_userlogin=")).toBeNull(); // u_userlogin ว่าง }); it("ค่ารอบด้วย space ถูก trim", () => { expect(parseOacCase("u_userid= 123 &u_userlogin= tu_2 ")).toEqual({ userId: "123", userName: "tu_2", }); }); it("ชื่อ cookie ตรงกับระบบ e-Court", () => { expect(OAC_CASE_COOKIE).toBe("oacCase"); }); }); describe("buildOacCaseCookie", () => { it("แทนเฉพาะ u_userid/u_userlogin — ฟิลด์อื่นคงค่าตัวอย่างจริงครบทุก field", () => { const fields = Object.fromEntries(new URLSearchParams(buildOacCaseCookie("xxxxxx", "user_x"))); expect(fields["u_userid"]).toBe("xxxxxx"); expect(fields["u_userlogin"]).toBe("user_x"); expect(fields["u_courtid"]).toBe("4"); expect(fields["u_perCardNo"]).toBe("5000000000006"); expect(fields["u_AuditID"]).toBe("1995227"); expect(Object.keys(fields)).toHaveLength(16); }); });