v0.5.11: /export публичный (временно, с заделом на Keycloak SSO)

Изменения:
- server.js: публичный GET /export до всей авторизации
  🔮 Для Keycloak SSO: раскомментировать auth.bearerMiddleware
- Удалён ошибочно созданный src/routes/exp.js
- Обновлены тесты: /export доступен без авторизации
This commit is contained in:
2026-06-02 18:12:35 +03:00
parent 15b458eb35
commit 6bbd0fe1e2
3 changed files with 35 additions and 13 deletions
+8 -7
View File
@@ -299,18 +299,19 @@ async function cleanup() {
log(r.headers['content-disposition']?.includes('custom.txt'), '4g: имя файла custom.txt', `disp=${r.headers['content-disposition']}`);
}
// 4h: GET /export без сессии → редирект
// 4h: GET /export без сессии → 200 (ПУБЛИЧНЫЙ, ВРЕМЕННО)
{
const r = await supertest(app).get('/export');
log(r.status === 302, '4h: GET /export без сессии → 302', `status=${r.status}`);
log(r.status === 200, '4h: GET /export без авторизации → 200 (публичный)', `status=${r.status}`);
log(r.headers['content-type']?.includes('text/plain'), '4i: Content-Type text/plain');
}
// 4i: GET /export?view=1&filename=test.txt
// 4j: GET /export?view=1&filename=test.txt
{
const r = await agentExp.get('/export?view=1&filename=test.txt');
log(r.status === 200, '4i: GET /export?view=1&filename=test.txt → 200', `status=${r.status}`);
log(r.headers['content-disposition']?.includes('inline'), '4j: inline (view=1 приоритетнее filename)');
log(r.headers['content-disposition']?.includes('test.txt'), '4k: имя файла test.txt');
const r = await supertest(app).get('/export?view=1&filename=test.txt');
log(r.status === 200, '4j: GET /export?view=1&filename=test.txt → 200', `status=${r.status}`);
log(r.headers['content-disposition']?.includes('inline'), '4k: inline (view=1 приоритетнее filename)');
log(r.headers['content-disposition']?.includes('test.txt'), '4l: имя файла test.txt');
}
// ════════════════════════════════════════════════════════════════════════════