route.test.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /* @vitest-environment node */
  2. import { describe, it, expect, vi, beforeEach } from "vitest";
  3. vi.mock("@/lib/auth/session", () => ({
  4. getSession: vi.fn(),
  5. }));
  6. import { getSession } from "@/lib/auth/session";
  7. import { GET, dynamic } from "./route.js";
  8. describe("GET /api/auth/me", () => {
  9. beforeEach(() => {
  10. vi.clearAllMocks();
  11. });
  12. it('exports dynamic="force-dynamic" (RHL-006)', () => {
  13. expect(dynamic).toBe("force-dynamic");
  14. });
  15. it("returns { user: null } when unauthenticated", async () => {
  16. getSession.mockResolvedValue(null);
  17. const res = await GET();
  18. expect(res.status).toBe(200);
  19. expect(await res.json()).toEqual({ user: null });
  20. });
  21. it("returns user payload when authenticated (includes email)", async () => {
  22. getSession.mockResolvedValue({
  23. userId: "u1",
  24. role: "branch",
  25. branchId: "NL01",
  26. email: "nl01@example.com",
  27. });
  28. const res = await GET();
  29. expect(res.status).toBe(200);
  30. expect(await res.json()).toEqual({
  31. user: {
  32. userId: "u1",
  33. role: "branch",
  34. branchId: "NL01",
  35. email: "nl01@example.com",
  36. },
  37. });
  38. });
  39. it("returns email=null when session has no email", async () => {
  40. getSession.mockResolvedValue({
  41. userId: "u2",
  42. role: "admin",
  43. branchId: null,
  44. email: null,
  45. });
  46. const res = await GET();
  47. expect(res.status).toBe(200);
  48. expect(await res.json()).toEqual({
  49. user: {
  50. userId: "u2",
  51. role: "admin",
  52. branchId: null,
  53. email: null,
  54. },
  55. });
  56. });
  57. });