2.7 KiB
2.7 KiB
MODIFIED Requirements
Requirement: Раздача веб-приложения
Хаб SHALL отдавать собранное веб-приложение (спека web-app) из каталога пакета src/jira_hub/web/app/, читая файлы
с диска на каждый запрос:
GET /app/assets/<путь>— файл изassets/сборки; путь, который после разрешения выходит заassets/, не существует или содержит нулевой байт, — 404;Content-Typeпо расширению (.js—text/javascript; charset=utf-8,.css—text/css; charset=utf-8,.svg—image/svg+xml,.png—image/png,.ico—image/x-icon,.woff2—font/woff2,.map—application/json, прочее —application/octet-stream);Cache-Control: public, max-age=31536000, immutable;- любой другой
GET /appилиGET /app/…—index.htmlсборки,text/html; charset=utf-8,Cache-Control: no-cache; - если
index.htmlсборки нет — на любойGET /app…503text/html; charset=utf-8с текстом, что приложение не собрано и нужно выполнитьmake webв каталоге jira-hub; GET /иGET /links— 302 сLocation: /app/board. Сборка приложения не хранится в git; её создаётmake web.
Scenario: Файл сборки
- WHEN в сборке есть
assets/index-abc123.js, запрошенGET /app/assets/index-abc123.js - THEN 200,
Content-Type: text/javascript; charset=utf-8,Cache-Controlсimmutable, тело — содержимое файла
Scenario: Путь приложения
- WHEN запрошен
GET /app/issues/AURORA-1620 - THEN 200, тело —
index.htmlсборки,Cache-Control: no-cache
Scenario: Выход за каталог сборки
- WHEN запрошен
GET /app/assets/../../api.py(в том числе в виде%2e%2e) - THEN 404, содержимое файлов вне
assets/не отдаётся
Scenario: Приложение не собрано
- WHEN каталога сборки нет, запрошен
GET /app/board - THEN 503, тело — HTML с подсказкой
make web
Scenario: Старый адрес доски
- WHEN запрошен
GET /linksилиGET / - THEN 302,
Location: /app/board
Scenario: Нулевой байт в пути
- WHEN запрошен
GET /app/assets/%00илиGET /app/assets/a%00.js - THEN 404
not_found, а не 500