Files

4.3 KiB

Тестирование IP WhiteList

Дата: 2026-05-30 Среда: https://white.nodejsk8s.dev.nubes.ru DEV_MODE: true ⚠️ После фиксов от 2026-05-30: код запушен, миграция БД применена, ожидается передеплой Nubes


Результаты

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 (пусто) Отклонено «Пустое значение»

Баги (исправлены 2026-05-30)

Ввод Ожидание Результат
17 192.0.2.0/22 Отклонено (суперсеть над TEST-NET)
18 8.8.8.8/24abc Отклонено (parseInt мусор)
19 10.0.0.0/24/8 Отклонено (множественные слэши)

Бизнес-логика

Тест Ожидание Результат
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

Команды для повторного прогона

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"

# Баги (исправлены 2026-05-30)
curl -s -X POST -d "value=192.0.2.0/22" "$BASE/add"           # суперсеть над TEST-NET
curl -s -X POST -d "value=8.8.8.8/24abc" "$BASE/add"          # parseInt мусор
curl -s -X POST -d "value=10.0.0.0/24/8" "$BASE/add"          # множественные слэши