test(auth): cover PSID external entry login
This commit is contained in:
@@ -11,6 +11,7 @@ export interface MockCoreApisOptions {
|
||||
paidImageFlow?: boolean;
|
||||
paidImageInsufficientCreditsFlow?: boolean;
|
||||
paidVoiceInsufficientCreditsFlow?: boolean;
|
||||
psidLoginFlow?: boolean;
|
||||
}
|
||||
|
||||
export async function mockCoreApis(page: Page, options: MockCoreApisOptions = {}) {
|
||||
@@ -20,12 +21,14 @@ export async function mockCoreApis(page: Page, options: MockCoreApisOptions = {}
|
||||
paidImageFlow: options.paidImageFlow ?? false,
|
||||
paidImageInsufficientCreditsFlow: options.paidImageInsufficientCreditsFlow ?? false,
|
||||
paidVoiceInsufficientCreditsFlow: options.paidVoiceInsufficientCreditsFlow ?? false,
|
||||
psidLoginFlow: options.psidLoginFlow ?? false,
|
||||
};
|
||||
const chatState = { hasExpiredChatSend: false, paidImageRequested: false, paidImageUnlocked: false };
|
||||
|
||||
await registerAuthMocks(page, {
|
||||
chatSendTokenRefreshFlow: chatOptions.chatSendTokenRefreshFlow,
|
||||
isChatSendTokenExpired: () => chatState.hasExpiredChatSend,
|
||||
psidLoginFlow: chatOptions.psidLoginFlow,
|
||||
});
|
||||
await registerUserMocks(page);
|
||||
await registerChatMocks(page, chatOptions, chatState);
|
||||
|
||||
@@ -1,14 +1,24 @@
|
||||
import type { Page } from "@playwright/test";
|
||||
|
||||
import { apiEnvelope } from "../data/common";
|
||||
import { emailLoginResponse, guestLoginResponse, refreshedEmailLoginResponse, refreshedGuestLoginResponse } from "../data/auth";
|
||||
import { emailLoginResponse, guestLoginResponse, psidLoginResponse, refreshedEmailLoginResponse, refreshedGuestLoginResponse } from "../data/auth";
|
||||
|
||||
export interface AuthMockState {
|
||||
chatSendTokenRefreshFlow: boolean;
|
||||
isChatSendTokenExpired: () => boolean;
|
||||
psidLoginFlow: boolean;
|
||||
}
|
||||
|
||||
export async function registerAuthMocks(page: Page, state: AuthMockState) {
|
||||
await page.route("**/api/auth/login/facebook/psid", async (route) => {
|
||||
if (!state.psidLoginFlow) {
|
||||
await route.continue();
|
||||
return;
|
||||
}
|
||||
|
||||
await route.fulfill({ json: apiEnvelope(psidLoginResponse) });
|
||||
});
|
||||
|
||||
await page.route("**/api/auth/guest", async (route) => {
|
||||
const response = state.chatSendTokenRefreshFlow && state.isChatSendTokenExpired() ? refreshedGuestLoginResponse : guestLoginResponse;
|
||||
await route.fulfill({ json: apiEnvelope(response) });
|
||||
|
||||
@@ -49,3 +49,15 @@ export const refreshedEmailLoginResponse = {
|
||||
token: "e2e-refreshed-email-token",
|
||||
refreshToken: "e2e-refreshed-email-refresh-token",
|
||||
};
|
||||
|
||||
export const psidLoginResponse = {
|
||||
token: "e2e-psid-guest-token",
|
||||
refreshToken: "",
|
||||
matchedBy: "psid",
|
||||
fbAsid: "",
|
||||
fbPsid: "e2e-facebook-psid",
|
||||
hasCompleteFacebookIdentity: false,
|
||||
isGuest: true,
|
||||
user: e2eUser,
|
||||
userId: e2eUser.id,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user