- Remove unused imports/variables in seed scripts and test files - Replace console.log with console.warn in seed/utility scripts - Replace `as any` with proper Prisma types (InputJsonValue, PaymentStatus, Plan, UserWhereInput) - Fix import-x/no-named-as-default-member warnings in logger, mapbox, eslint config - Prefix unused callback params with underscore in e2e tests Co-Authored-By: Paperclip <noreply@paperclip.ing>
58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('OAuth Callback Pages', () => {
|
|
test.describe('Google callback', () => {
|
|
test('shows loading state while processing', async ({ page }) => {
|
|
// Intercept token exchange to keep it pending
|
|
await page.route('**/auth/google/callback**', (_route) =>
|
|
new Promise(() => {
|
|
// Never resolve — keeps loading state visible
|
|
}),
|
|
);
|
|
|
|
await page.goto('/auth/callback/google?code=test-code');
|
|
// Should show a loading/spinner state
|
|
await expect(page.locator('.animate-spin').first()).toBeVisible({ timeout: 5000 });
|
|
});
|
|
|
|
test('redirects to login with error on failure', async ({ page }) => {
|
|
await page.route('**/auth/google/callback**', (route) =>
|
|
route.fulfill({
|
|
status: 401,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ message: 'OAuth failed' }),
|
|
}),
|
|
);
|
|
|
|
await page.goto('/auth/callback/google?code=bad-code');
|
|
await expect(page).toHaveURL(/\/login\?error=/, { timeout: 10000 });
|
|
});
|
|
});
|
|
|
|
test.describe('Zalo callback', () => {
|
|
test('shows loading state while processing', async ({ page }) => {
|
|
await page.route('**/auth/zalo/callback**', (_route) =>
|
|
new Promise(() => {
|
|
// Never resolve
|
|
}),
|
|
);
|
|
|
|
await page.goto('/auth/callback/zalo?code=test-code');
|
|
await expect(page.locator('.animate-spin').first()).toBeVisible({ timeout: 5000 });
|
|
});
|
|
|
|
test('redirects to login with error on failure', async ({ page }) => {
|
|
await page.route('**/auth/zalo/callback**', (route) =>
|
|
route.fulfill({
|
|
status: 401,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ message: 'OAuth failed' }),
|
|
}),
|
|
);
|
|
|
|
await page.goto('/auth/callback/zalo?code=bad-code');
|
|
await expect(page).toHaveURL(/\/login\?error=/, { timeout: 10000 });
|
|
});
|
|
});
|
|
});
|