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

3.8 KiB

Тесты: мульти-компания (2026-06-02)

Запускать против https://white.nodejsk8s.dev.nubes.ru Куки сохраняются между запросами (использовать -c jar.txt -b jar.txt)

1. Логин под мульти-компанией

# Получить 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

# Страница должна содержать переключатель (<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. Добавление записи в активную компанию

# Создать запись в 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. Проверка изоляции компаний

# Переключиться обратно на 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-тест (опционально)

# Выпустить 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. Негативные тесты

# Переключение на несуществующую компанию — игнорируется
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