v2: +admin мок-юзер (3 компании, без имперсонации) для полного тестирования
This commit is contained in:
@@ -552,3 +552,128 @@ VM (italo.kube5s.ru) — НЕ используется для деплоя v2.
|
||||
| 105/150 ошибок | 3 задачи × 15 > лимит 15 | 1 задача × 10 | 0.5.89 |
|
||||
| /chaos → 302 /login | Роутер на /test/api | Сменили на /test | 0.5.88 |
|
||||
| validate() в db/queries | Смешаны слои | Вынесен в crud/ | 0.5.91 |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Результаты тестирования (0.5.94, 2026-06-13)
|
||||
|
||||
### Среда
|
||||
|
||||
- **URL**: `https://whitelist.nodejsk8s.services.ngcloud.ru/v2/test`
|
||||
- **БД**: production PostgreSQL (k8s)
|
||||
- **Метод**: Python-скрипт через `urllib.request` (эмуляция curl)
|
||||
- **Слои под тестом**: HTTP → test → crud → validate → db → PostgreSQL
|
||||
|
||||
### Результаты: 41/41 ✅
|
||||
|
||||
#### 1. Запрещённые диапазоны (14/14 ✅)
|
||||
|
||||
Все 14 диапазонов из Приложения А ТЗ корректно отклоняются:
|
||||
|
||||
| Диапазон | Описание | Результат |
|
||||
|----------|---------|-----------|
|
||||
| 10.0.0.0/8 | Private RFC1918 | ✅ blocked |
|
||||
| 172.16.0.0/12 | Private RFC1918 | ✅ blocked |
|
||||
| 192.168.0.0/16 | Private RFC1918 | ✅ blocked |
|
||||
| 100.64.0.0/10 | CGNAT RFC6598 | ✅ blocked |
|
||||
| 127.0.0.0/8 | Loopback | ✅ blocked |
|
||||
| 169.254.0.0/16 | Link-local | ✅ blocked |
|
||||
| 192.0.0.0/24 | IANA special | ✅ blocked |
|
||||
| 192.0.2.0/24 | TEST-NET-1 | ✅ blocked |
|
||||
| 198.51.100.0/24 | TEST-NET-2 | ✅ blocked |
|
||||
| 203.0.113.0/24 | TEST-NET-3 | ✅ blocked |
|
||||
| 198.18.0.0/15 | Benchmarking | ✅ blocked |
|
||||
| 224.0.0.0/4 | Multicast | ✅ blocked |
|
||||
| 240.0.0.0/4 | Reserved Class E | ✅ blocked |
|
||||
| 255.255.255.255/32 | Broadcast | ✅ blocked |
|
||||
|
||||
Тестируется через: `?action=add&user=u1&cidr=X.X.X.X/XX`
|
||||
|
||||
#### 2. Нормализация и маски (6/6 ✅)
|
||||
|
||||
| Тест | Вход | Ожидание | Результат |
|
||||
|------|------|---------|-----------|
|
||||
| Маска /22 | 11.0.0.0/22 | ok (минимальная) | ✅ |
|
||||
| Маска /21 | 12.0.0.0/21 | fail (< /22) | ✅ |
|
||||
| Маска /33 | 1.1.1.1/33 | fail (> /32) | ✅ |
|
||||
| IPv6 | 2001:db8::1 | fail | ✅ |
|
||||
| Домен | example.com | fail | ✅ |
|
||||
| Нормализация | 13.0.0.5/24 | wasNormalized=true | ✅ |
|
||||
|
||||
#### 3. Лимиты (1/1 ✅)
|
||||
|
||||
| Тест | Результат |
|
||||
|------|-----------|
|
||||
| 16-я запись отклонена (лимит 15) | ✅ |
|
||||
|
||||
#### 4. CRUD полный цикл (7/7 ✅)
|
||||
|
||||
| Операция | Результат |
|
||||
|----------|-----------|
|
||||
| add (30.30.30.0/24) | ✅ |
|
||||
| add2 (31.31.31.0/24) | ✅ |
|
||||
| add /32 (32.32.32.32) | ✅ |
|
||||
| list → 3 записи | ✅ |
|
||||
| edit (33.33.33.0/24) | ✅ |
|
||||
| delete (soft) | ✅ |
|
||||
| after delete → 2 записи | ✅ |
|
||||
|
||||
#### 5. Изоляция компаний (3/3 ✅)
|
||||
|
||||
| Тест | Результат |
|
||||
|------|-----------|
|
||||
| add в компанию A (WZ20002) | ✅ |
|
||||
| add в компанию B (WZ20001, через switch) | ✅ |
|
||||
| Пересечение между компаниями разрешено | ✅ |
|
||||
|
||||
#### 6. Switch + имперсонация (4/4 ✅)
|
||||
|
||||
| Тест | Результат |
|
||||
|------|-----------|
|
||||
| switch на WZ20001 | ✅ |
|
||||
| switch обратно на WZ20002 | ✅ |
|
||||
| imp add (impersonation) | ✅ |
|
||||
| audit: impersonated_by=admin@t.ru, user_email=real@t.ru | ✅ |
|
||||
|
||||
#### 7. UserFlow — полная эмуляция юзера (4/4 ✅)
|
||||
|
||||
| Тест | Слой | Результат |
|
||||
|------|------|-----------|
|
||||
| uf add (77.77.77.0/24) | user→crud→db | ✅ |
|
||||
| uf list | user→crud→db | ✅ |
|
||||
| uf blocked (10.0.0.0/24) | user→crud→db | ✅ (ошибка валидации) |
|
||||
| uf imp add (78.78.78.0/24) | user→crud→db | ✅ |
|
||||
|
||||
Ключевое: `layer: "user→crud→db"` в ответе подтверждает прохождение через все слои.
|
||||
|
||||
#### 8. Chaos — параллельные операции (1/1 ✅)
|
||||
|
||||
```
|
||||
ok: True, ok: 40, errors: 0, entries: 40, audit: 40
|
||||
WZ10001: entries=10 audit=10 dupes=False overLimit=False
|
||||
WZ20002: entries=10 audit=10 dupes=False overLimit=False
|
||||
WZ30001: entries=10 audit=10 dupes=False overLimit=False
|
||||
WZ01112: entries=10 audit=10 dupes=False overLimit=False
|
||||
```
|
||||
|
||||
4 компании × 10 записей = 40 параллельных Promise.all.
|
||||
Проверки: без дубликатов, в лимите, аудит записан.
|
||||
|
||||
### Итого
|
||||
|
||||
| Группа | Тестов | Статус |
|
||||
|--------|--------|--------|
|
||||
| Запрещённые диапазоны | 14 | ✅ |
|
||||
| Нормализация | 6 | ✅ |
|
||||
| Лимиты | 1 | ✅ |
|
||||
| CRUD | 7 | ✅ |
|
||||
| Изоляция | 3 | ✅ |
|
||||
| Switch + имперсонация | 4 | ✅ |
|
||||
| UserFlow | 4 | ✅ |
|
||||
| Chaos | 1 | ✅ |
|
||||
| Cleanup | 1 | ✅ |
|
||||
| **Всего** | **41** | **✅** |
|
||||
|
||||
Предыдущие тесты (test.sh, router): 64 теста.
|
||||
Общий итог: **105 тестов, все пройдены** ✅
|
||||
|
||||
Reference in New Issue
Block a user