CI / Generate TypeScript types (push) Successful in 12s
CI / Server unit tests (push) Successful in 26s
CI / Build server (push) Successful in 32s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m47s
CI / Build and push Docker image (push) Successful in 49s
CI / Notify (push) Successful in 2s
46 lines
2.1 KiB
TypeScript
46 lines
2.1 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
// Tento soubor záměrně NEPOUŽÍVÁ výchozí trusted-header — testuje chování přihlašovací stránky.
|
|
test.use({ extraHTTPHeaders: {} });
|
|
|
|
test('při přihlášení přes proxy se formulář nezobrazí — bez hlavičky hláška, opakování s hlavičkou přihlásí', async ({ page }) => {
|
|
// Server běží s HTTP_REMOTE_USER_ENABLED=true (přihlašuje proxy), takže formulář se jménem
|
|
// nemá smysl. Bez hlavičky remote-user se zobrazí hláška s tlačítkem „Zkusit znovu".
|
|
let sendHeader = false;
|
|
await page.route('**/api/login', async (route) => {
|
|
await route.continue({
|
|
headers: sendHeader
|
|
? { ...route.request().headers(), 'remote-user': 'testuser' }
|
|
: route.request().headers(),
|
|
});
|
|
});
|
|
|
|
await page.goto('/');
|
|
|
|
const retry = page.getByRole('button', { name: 'Zkusit znovu' });
|
|
await expect(retry).toBeVisible({ timeout: 10_000 });
|
|
await expect(page.getByText('Přihlášení probíhá přes firemní přihlášení (proxy)')).toBeVisible();
|
|
await expect(page.locator('#login-input')).toHaveCount(0);
|
|
|
|
// Proxy teď identitu pošle — opakování přihlásí
|
|
sendHeader = true;
|
|
await retry.click();
|
|
await expect(retry).not.toBeVisible({ timeout: 10_000 });
|
|
|
|
// JWT musí být uloženo v localStorage jako 3-dílný token
|
|
const token = await page.evaluate(() => localStorage.getItem('token'));
|
|
expect(token).toBeTruthy();
|
|
expect((token as string).split('.')).toHaveLength(3);
|
|
});
|
|
|
|
test('trusted-header přihlášení proběhne automaticky bez formuláře', async ({ page, context }) => {
|
|
// Obnoví trusted header (přepíše prázdný extraHTTPHeaders z test.use výše)
|
|
await context.setExtraHTTPHeaders({ 'remote-user': 'e2e-auto-user' });
|
|
await page.goto('/');
|
|
|
|
// Login formulář by se neměl nikdy zobrazit, nebo se ihned schová
|
|
await page.waitForLoadState('networkidle');
|
|
const loginInput = page.locator('#login-input');
|
|
await expect(loginInput).not.toBeVisible({ timeout: 5_000 });
|
|
});
|