7.0 KiB
LDAP Integration Tests
Описание
Интеграционные тесты для проверки работы с реальным LDAP сервером в Docker.
Быстрый старт
1. Запуск LDAP сервера
cd backend
docker-compose -f docker-compose.test.yml up -d
Сервисы:
- OpenLDAP:
ldap://localhost:10389 - phpLDAPadmin (веб-интерфейс): http://localhost:8090
Учётные данные:
- Admin DN:
cn=admin,dc=test,dc=local - Admin Password:
test_change-me-redacted-secret
2. Проверка работы LDAP
# Через ldapsearch (если установлен)
ldapsearch -x -H ldap://localhost:10389 -b "dc=test,dc=local" \
-D "cn=admin,dc=test,dc=local" -w test_change-me-redacted-secret
# Через веб-интерфейс
# Откройте http://localhost:8090
# Login DN: cn=admin,dc=test,dc=local
# Password: test_change-me-redacted-secret
3. Установка зависимостей для тестов
pip install python-ldap
4. Запуск интеграционных тестов
# Все интеграционные тесты
pytest -m integration tests/integration/ -v
# Конкретный тест
pytest tests/integration/test_ldap_integration.py::test_ldap_server_is_accessible -v
# С остановкой на первой ошибке
pytest -m integration tests/integration/ -v -x
# С подробным выводом
pytest -m integration tests/integration/ -v -s
5. Остановка LDAP сервера
# Остановить с сохранением данных
docker-compose -f docker-compose.test.yml stop
# Остановить и удалить (очистить данные)
docker-compose -f docker-compose.test.yml down -v
Структура
tests/
├── integration/
│ ├── conftest.py # Фикстуры для интеграционных тестов
│ └── test_ldap_integration.py # Интеграционные тесты LDAP
└── ldap_fixtures/
└── 01-base-structure.ldif # Начальная структура LDAP
Конфигурация тестового LDAP
База данных:
- Base DN:
dc=test,dc=local - Users OU:
ou=Users,dc=test,dc=local - Groups OU:
ou=Groups,dc=test,dc=local - Departments OU:
ou=Departments,dc=test,dc=local
Тестовые данные:
- Пользователь:
cn=test.user,ou=Users,dc=test,dc=local - Группа:
cn=test-group,ou=Groups,dc=test,dc=local - Отдел:
ou=IT,ou=Departments,dc=test,dc=local
Созданные тесты
✅ test_ldap_server_is_accessible
Проверяет доступность LDAP сервера и базовую структуру.
🔧 test_register_user_creates_in_ldap
Тестирует создание пользователя через API с записью в LDAP. Статус: Требует настройки DirectoryService на тестовый LDAP
🔧 test_verify_email_activates_in_ldap
Тестирует верификацию email и активацию в LDAP. Статус: Требует настройки DirectoryService на тестовый LDAP
🔧 test_create_group_syncs_to_ldap
Тестирует создание группы с синхронизацией в LDAP. Статус: Требует настройки DirectoryService на тестовый LDAP
🔧 test_full_user_lifecycle_with_ldap
Тестирует полный жизненный цикл: регистрация → верификация → активация. Статус: Требует настройки DirectoryService на тестовый LDAP
TODO
Следующие шаги:
-
Настроить DirectoryService для тестов
# В conftest.py или settings_test.py LDAP_SERVER_URI = "ldap://localhost:10389" LDAP_BASE_DN = "dc=test,dc=local" -
Добавить хелперы для проверки LDAP
def assert_user_exists_in_ldap(username): """Проверяет наличие пользователя в LDAP""" conn = ldap.initialize("ldap://localhost:10389") # ... -
Расширить тестовое покрытие
- Тесты отделов с LDAP
- Тесты позиций с LDAP
- Тесты синхронизации изменений
- Тесты удаления и деактивации
-
Добавить CI/CD интеграцию
# .github/workflows/tests.yml - name: Start LDAP server run: docker-compose -f docker-compose.test.yml up -d - name: Run integration tests run: pytest -m integration
Отладка
Просмотр логов LDAP
docker logs eusrr-test-ldap -f
Подключение к контейнеру
docker exec -it eusrr-test-ldap bash
Проверка данных в LDAP
# Список всех пользователей
docker exec eusrr-test-ldap ldapsearch -x -b "ou=Users,dc=test,dc=local" -D "cn=admin,dc=test,dc=local" -w test_change-me-redacted-secret
# Список всех групп
docker exec eusrr-test-ldap ldapsearch -x -b "ou=Groups,dc=test,dc=local" -D "cn=admin,dc=test,dc=local" -w test_change-me-redacted-secret
Сброс данных LDAP
# Удалить все данные и начать заново
docker-compose -f docker-compose.test.yml down -v
docker-compose -f docker-compose.test.yml up -d
Полезные команды
# Статус контейнеров
docker-compose -f docker-compose.test.yml ps
# Рестарт LDAP
docker-compose -f docker-compose.test.yml restart test-ldap
# Просмотр использования ресурсов
docker stats eusrr-test-ldap
# Экспорт данных LDAP
docker exec eusrr-test-ldap slapcat > ldap_backup.ldif
Troubleshooting
Проблема: LDAP сервер не запускается
Решение:
# Проверить логи
docker logs eusrr-test-ldap
# Проверить занят ли порт
netstat -ano | findstr :10389
# Убить процесс если порт занят
taskkill /PID <PID> /F
Проблема: Тесты не могут подключиться к LDAP
Решение:
- Проверить что контейнер запущен:
docker ps - Проверить доступность порта:
telnet localhost 10389 - Увеличить время ожидания в
conftest.py
Проблема: python-ldap не устанавливается на Windows
Решение:
# Установить готовый wheel
pip install https://download.lfd.uci.edu/pythonlibs/archived/python_ldap-3.4.0-cp313-cp313-win_amd64.whl
# Или использовать ldap3 (альтернатива)
pip install ldap3