import { describe, expect, it } from "vitest"; import { FacebookIdentityResponseSchema, FacebookPsidLoginResponseSchema, LoginRequestSchema, } from "@/data/schemas/auth"; import { UserSchema } from "@/data/schemas/user/user"; describe("facebook identity schema models", () => { it("parses facebook identity binding responses", () => { const response = FacebookIdentityResponseSchema.parse({ fbAsid: "asid-1", fbPsid: "psid-1", facebookBinding: { conflicts: [], bound: [{ field: "psid" }], }, }); expect(response).toMatchObject({ fbAsid: "asid-1", fbPsid: "psid-1", facebookBinding: { conflicts: [], bound: [{ field: "psid" }], }, }); }); it("parses facebook psid login responses for real users and guests", () => { expect( FacebookPsidLoginResponseSchema.parse({ token: "login-token", refreshToken: "refresh-token", matchedBy: "psid", fbAsid: "asid-1", fbPsid: "psid-1", hasCompleteFacebookIdentity: true, isGuest: false, user: { id: "user-1", username: "Elio" }, }), ).toMatchObject({ isGuest: false, hasCompleteFacebookIdentity: true, user: { id: "user-1" }, }); expect( FacebookPsidLoginResponseSchema.parse({ token: "guest-token", matchedBy: "guest", fbPsid: "psid-1", hasCompleteFacebookIdentity: false, isGuest: true, userId: "guest-1", }), ).toMatchObject({ refreshToken: "", isGuest: true, userId: "guest-1", user: null, }); }); it("keeps psid in request serialization without a public field declaration", () => { const request = LoginRequestSchema.parse({ email: "user@example.com", password: "password", platform: "web", guestId: "", psid: "psid-1", }); expect(request).toMatchObject({ psid: "psid-1" }); }); it("accepts facebook identity fields in user schema", () => { expect( UserSchema.parse({ id: "user-1", username: "Elio", fbAsid: "asid-1", fbPsid: "psid-1", }), ).toMatchObject({ fbAsid: "asid-1", fbPsid: "psid-1", }); }); });