Files
nat-as-server/e2e/api/app-questionnaires.spec.ts
tom.hempel 06fc134299
Some checks failed
Tests / test (push) Has been cancelled
just testing the environment
2026-05-20 07:10:08 +02:00

77 lines
3.0 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { test, expect } from '@playwright/test';
const API = '/api';
const PASSWORD = 'testpass123';
async function login(request: import('@playwright/test').APIRequestContext, username: string) {
const res = await request.post(`${API}/auth/login`, {
data: { username, password: PASSWORD },
});
const json = await res.json();
expect(json.ok).toBe(true);
return json.data.token as string;
}
test.describe('Android API app_questionnaires (HTTP smoke)', () => {
test('list active questionnaires over HTTP', async ({ request }) => {
const token = await login(request, 'testcoach1');
const res = await request.get(`${API}/app_questionnaires`, {
headers: { Authorization: `Bearer ${token}` },
});
expect(res.ok()).toBeTruthy();
const json = await res.json();
expect(json.ok).toBe(true);
expect(json.data.some((q: { id: string }) => q.id === 'questionnaire_test_demo')).toBe(true);
});
test('missing bearer returns 401', async ({ request }) => {
const res = await request.get(`${API}/app_questionnaires`);
expect(res.status()).toBe(401);
});
test('password change flow', async ({ request }) => {
const loginRes = await request.post(`${API}/auth/login`, {
data: { username: 'testmustchange', password: PASSWORD },
});
const loginJson = await loginRes.json();
expect(loginJson.data.mustChangePassword).toBe(true);
const tempToken = loginJson.data.token as string;
let fullToken: string | undefined;
try {
const blocked = await request.get(`${API}/app_questionnaires`, {
headers: { Authorization: `Bearer ${tempToken}` },
});
expect(blocked.status()).toBe(403);
const changeRes = await request.post(`${API}/auth/change-password`, {
headers: { Authorization: `Bearer ${tempToken}` },
data: {
username: 'testmustchange',
old_password: PASSWORD,
new_password: 'newpass123',
},
});
const changeJson = await changeRes.json();
expect(changeJson.ok).toBe(true);
fullToken = changeJson.data.token as string;
const ok = await request.get(`${API}/app_questionnaires`, {
headers: { Authorization: `Bearer ${fullToken}` },
});
expect(ok.ok()).toBeTruthy();
} finally {
if (fullToken) {
await request.post(`${API}/auth/change-password`, {
headers: { Authorization: `Bearer ${fullToken}` },
data: {
username: 'testmustchange',
old_password: 'newpass123',
new_password: PASSWORD,
},
});
}
}
});
});