88146f22b6
Frontend CI / build-and-check (push) Failing after 19s
🚀 Create and publish a Docker image / Detect changes in backend and frontend (push) Successful in 8s
🚀 Create and publish a Docker image / Build & publish backend image (push) Successful in 8s
🚀 Create and publish a Docker image / Build & publish frontend image (push) Successful in 20s
🚀 Create and publish a Docker image / Update stack on Portainer (push) Successful in 3s
75 lines
1.9 KiB
TypeScript
75 lines
1.9 KiB
TypeScript
import { Page } from '@playwright/test'
|
|
import { mockAuthResponse, mockCurrentUser, mockLectures, mockUserStats } from '../../mocks/fixtures'
|
|
|
|
export async function mockApi(page: Page, options?: { authenticated?: boolean }) {
|
|
const authenticated = options?.authenticated ?? false
|
|
|
|
await page.route('**/api/v1/auth/refresh', async (route) => {
|
|
if (!authenticated) {
|
|
await route.fulfill({
|
|
status: 401,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ message: 'Unauthorized' }),
|
|
})
|
|
return
|
|
}
|
|
|
|
await route.fulfill({
|
|
status: 200,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify(mockAuthResponse),
|
|
})
|
|
})
|
|
|
|
await page.route('**/api/v1/auth/me', async (route) => {
|
|
if (!authenticated) {
|
|
await route.fulfill({
|
|
status: 401,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ message: 'Unauthorized' }),
|
|
})
|
|
return
|
|
}
|
|
|
|
await route.fulfill({
|
|
status: 200,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify(mockCurrentUser),
|
|
})
|
|
})
|
|
|
|
await page.route('**/api/v1/users/me/stats', async (route) => {
|
|
if (!authenticated) {
|
|
await route.fulfill({
|
|
status: 401,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ message: 'Unauthorized' }),
|
|
})
|
|
return
|
|
}
|
|
|
|
await route.fulfill({
|
|
status: 200,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify(mockUserStats),
|
|
})
|
|
})
|
|
|
|
await page.route('**/api/v1/lectures/*/enroll', async (route) => {
|
|
await route.fulfill({ status: 204 })
|
|
})
|
|
|
|
await page.route(/\/api\/v1\/lectures(\?.*)?$/, async (route) => {
|
|
if (route.request().method() !== 'GET') {
|
|
await route.continue()
|
|
return
|
|
}
|
|
|
|
await route.fulfill({
|
|
status: 200,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ items: mockLectures }),
|
|
})
|
|
})
|
|
}
|