Files
ipwhitelist-app/docs/tests-multi-company.md
T

105 lines
3.8 KiB
Markdown

# Тесты: мульти-компания (2026-06-02)
> Запускать против `https://white.nodejsk8s.dev.nubes.ru`
> Куки сохраняются между запросами (использовать `-c jar.txt -b jar.txt`)
## 1. Логин под мульти-компанией
```bash
# Получить CSRF-токен и логин-форму
curl -s -c jar.txt https://white.nodejsk8s.dev.nubes.ru/login > /dev/null
# Извлечь CSRF-токен
CSRF=$(curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/login | grep -oP 'name="_csrf" value="\K[^"]+')
# Залогиниться как "multi"
curl -s -b jar.txt -c jar.txt \
-X POST https://white.nodejsk8s.dev.nubes.ru/login \
-d "user=multi&_csrf=$CSRF" \
-D - | head -1
# Ожидаем: HTTP/1.1 302 → /
# Проверить что сессия содержит allClientIds
curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -c 'WZ01325'
# Ожидаем: >0 (активная компания в интерфейсе)
```
## 2. Переключатель компаний в UI
```bash
# Страница должна содержать переключатель (<select name="switchTo">)
curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -c 'switchTo'
# Ожидаем: >0
# Должны быть обе компании в options
curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -o 'WZ0[0-9]*'
# Ожидаем: WZ01325 и WZ02001
# Переключиться на WZ02001
curl -s -b jar.txt -c jar.txt \
https://white.nodejsk8s.dev.nubes.ru/?switchTo=WZ02001 \
> /dev/null
# Проверить что активная компания — WZ02001
curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -c 'WZ02001'
# Ожидаем: >0
```
## 3. Добавление записи в активную компанию
```bash
# Создать запись в WZ02001 (после переключения на неё)
CSRF=$(curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -oP 'name="_csrf" value="\K[^"]+')
curl -s -b jar.txt -c jar.txt \
-X POST https://white.nodejsk8s.dev.nubes.ru/add \
-d "value=8.8.8.8/32&comment=multi-test&_csrf=$CSRF" \
-D - | head -1
# Ожидаем: HTTP/1.1 302
# Проверить что запись появилась в WZ02001
curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -c '8.8.8.8'
# Ожидаем: >0
```
## 4. Проверка изоляции компаний
```bash
# Переключиться обратно на WZ01325
curl -s -b jar.txt -c jar.txt \
https://white.nodejsk8s.dev.nubes.ru/?switchTo=WZ01325 \
> /dev/null
# Запись 8.8.8.8 из WZ02001 НЕ должна быть видна в WZ01325
curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -c '8.8.8.8'
# Ожидаем: 0
```
## 5. API Bearer-тест (опционально)
```bash
# Выпустить mock JWT с clientid через запятую
# (требует ручной JWT через /dev-login или issueMockToken)
# Затем:
curl -s -H "Authorization: Bearer <mock-jwt>" \
https://white.nodejsk8s.dev.nubes.ru/api/v1/entries | jq .
# Ожидаем: записи для первой компании (WZ01325)
```
## 6. Негативные тесты
```bash
# Переключение на несуществующую компанию — игнорируется
curl -s -b jar.txt -c jar.txt \
https://white.nodejsk8s.dev.nubes.ru/?switchTo=WZ99999 \
> /dev/null
# Должен остаться на WZ01325
curl -s -b jar.txt https://white.nodejsk8s.dev.nubes.ru/ | grep -c 'WZ01325'
# Ожидаем: >0
# Одиночная компания (test, не multi) — переключателя быть не должно
# Залогиниться как test и проверить:
# grep -c 'switchTo' → ожидаем 0
```