From ea5d3c969c00c5ad211571b436d309a5fb020672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 30 May 2026 00:02:15 +0300 Subject: [PATCH] =?UTF-8?q?test:=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=E2=80=94=2016/16=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B9=D0=B4=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test-results.md | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 tests/test-results.md diff --git a/tests/test-results.md b/tests/test-results.md new file mode 100644 index 0000000..596e2fa --- /dev/null +++ b/tests/test-results.md @@ -0,0 +1,84 @@ +# Тестирование IP WhiteList + +> Дата: 2026-05-30 +> Среда: `https://white.nodejsk8s.dev.nubes.ru` +> DEV_MODE: true + +--- + +## Результаты + +### Health check +| Тест | Запрос | Ожидание | Результат | +|---|---|---|---| +| Health | `GET /healthz` | 200 OK | ✅ OK | + +### Валидатор IPv4/CIDR +| № | Ввод | Ожидание | Результат | +|---|---|---|---| +| 1 | `8.8.8.8` | Добавлено как /32 | ✅ | +| 2 | `185.178.210.0/24` | Добавлено | ✅ | +| 3 | `1.0.0.0/22` | Добавлено (граница маски) | ✅ | +| 4 | `1.0.0.0/21` | Отклонено (маска шире /22) | ✅ «Маска должна быть от /22 до /32» | +| 5 | `1.2.3.5/24` | Нормализовано в `1.2.3.0/24` | ✅ «Адрес нормализован» | +| 6 | `10.0.0.1` | Отклонено (RFC1918) | ✅ «Диапазон запрещён» | +| 7 | `192.168.1.0/24` | Отклонено (RFC1918) | ✅ «Диапазон запрещён» | +| 8 | `203.0.113.0/24` | Отклонено (TEST-NET) | ✅ «Диапазон запрещён» | +| 9 | `::1` | Отклонено (IPv6) | ✅ «IPv6 не поддерживается» | +| 10 | `google.com` | Отклонено (домен) | ✅ «Некорректный формат» | +| 11 | `абвгд` | Отклонено (мусор) | ✅ «Некорректный IPv4 адрес» | +| 12 | (пусто) | Отклонено | ✅ «Пустое значение» | + +### Бизнес-логика +| № | Тест | Ожидание | Результат | +|---|---|---|---| +| 13 | Дубликат `8.8.8.8` | Отклонено | ✅ «Такой адрес уже существует» | +| 14 | Пересечение `1.0.0.0/24` внутри `1.0.0.0/22` | Отклонено | ✅ «Пересечение с существующей записью» | +| 15 | 15 записей добавлено | 16-я отклонена | ✅ «Лимит исчерпан» | + +### Экспорт +| № | Тест | Ожидание | Результат | +|---|---|---|---| +| 16 | `GET /export` | txt, по одному CIDR на строку | ✅ `1.2.3.0/24\n185.178.210.0/24\n8.8.8.8/32\n` | + +### Итого +- Всего тестов: 16 +- Пройдено: 16 +- Провалено: 0 + +--- + +## Команды для повторного прогона + +```bash +BASE="https://white.nodejsk8s.dev.nubes.ru" + +# Health +curl -s "$BASE/healthz" + +# Валидные +curl -s -X POST -d "value=8.8.8.8&comment=Google" "$BASE/add" +curl -s -X POST -d "value=185.178.210.0/24&comment=Офис" "$BASE/add" +curl -s -X POST -d "value=1.0.0.0/22" "$BASE/add" + +# Невалидные +curl -s -X POST -d "value=1.0.0.0/21" "$BASE/add" # маска +curl -s -X POST -d "value=10.0.0.1" "$BASE/add" # серый +curl -s -X POST -d "value=192.168.1.0/24" "$BASE/add" # серый +curl -s -X POST -d "value=::1" "$BASE/add" # IPv6 +curl -s -X POST -d "value=google.com" "$BASE/add" # домен +curl -s -X POST -d "value=абвгд" "$BASE/add" # мусор +curl -s -X POST -d "value=" "$BASE/add" # пусто + +# Дубликат +curl -s -X POST -d "value=8.8.8.8" "$BASE/add" + +# Пересечение +curl -s -X POST -d "value=1.0.0.0/24" "$BASE/add" + +# Нормализация +curl -s -X POST -d "value=1.2.3.5/24" "$BASE/add" + +# Экспорт +curl -s "$BASE/export" +```