92 lines
2.2 KiB
TypeScript
92 lines
2.2 KiB
TypeScript
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",
|
|
});
|
|
});
|
|
});
|