85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
# Тестирование 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"
|
|
```
|