Files
image-gateway/docs/testing-checklist.md
S.Gromov 0751c4b469 feat: добавить Image Gateway с кешем Souin
- добавлена сборка Caddy с Souin, Otter и NutsDB

- добавлена конфигурация dev, prod и test Docker Compose

- настроено кеширование через Otter L1 и NutsDB L2

- добавлены e2e-тесты Bun для кеша, restart и purge

- добавлена документация по запуску, API кеша и тестам
2026-05-04 12:18:37 +03:00

58 lines
2.9 KiB
Markdown
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.

# Чек-лист тестирования
Для автоматической проверки критичных сценариев кеша используйте [e2e-tests.md](e2e-tests.md):
```bash
./scripts/test-e2e.sh
```
Этот чек-лист остается ручной проверкой полного поведения gateway.
## 1. Инфраструктура
- [x] Запуск: `docker compose -f docker-compose.dev.yml up -d --build`
- [x] Оба контейнера работают: `docker ps` показывает caddy + imgproxy
- [x] Логи Caddy: `docker compose -f docker-compose.dev.yml logs caddy` — нет ошибок
- [x] Логи imgproxy: `docker compose -f docker-compose.dev.yml logs imgproxy` — нет ошибок
- [x] Caddy слушает порт 8888: `curl -s -o /dev/null -w "%{http_code}" http://localhost:8888/` → 200
## 2. Базовые запросы
- [x] MISS (первый запрос) → 200, `Cache-Status: Souin; fwd=uri-miss; stored`
- [x] HIT (повторный запрос) → 200, `Cache-Status: Souin; hit`, время < 5ms
- [x] Несуществующий источник imgproxy возвращает 500
## 3. Обработка изображений
- [x] `resize:fit:800:0:0` изображение вписано в 800px по ширине
- [x] `resize:fill:400:300:0` изображение 400x300, обрезано
- [x] `crop:200:200` обрезка 200x200
- [x] `q:100` vs `q:10` размер файла: 48931 vs 3910 (разница ~12x)
- [x] `format:webp` `Content-Type: image/webp`
- [x] Комбинированные: `resize:fit:800:0:0/g:ce/q:75/format:webp`
- [x] `plain/{url}` прямая передача URL
- [x] base64url-encoded source работает
## 4. Unsigned режим
- [x] `/unsafe/resize:fit:100:0:0/...` 200
- [x] Без `/unsafe/` тоже 200 (ключи не заданы, подпись не проверяется)
> **Примечание:** Когда `IMGPROXY_KEY` и `IMGPROXY_SALT` пустые, imgproxy принимает любые URL (с и без `/unsafe/`). `/unsafe/` обязателен только при включённой подписи.
## 5. Кеш
- [x] Разные размеры = разные ключи кеша (не конфликтуют)
- [x] `Cache-Status` заголовок в каждом ответе
- [x] Ключ кеша содержит полный путь: `GET-http-localhost:8888-/unsafe/...`
## 6. Souin API (через Caddy admin :2019)
- [x] `GET /souin-api/souin/` возвращает JSON-массив ключей
- [x] `PURGE /souin-api/souin/flush` 204, кеш сброшен
- [x] `PURGE /souin-api/souin/{regex}` 204, purge по regex работает
## 7. Останов
- [ ] `docker compose -f docker-compose.dev.yml down` останавливает и удаляет контейнеры