#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Тестовый скрипт для проверки сворачивания секций LogBoard+ Автор: Сергей Антропов Сайт: https://devops.org.ru """ import requests import json def test_collapse_functionality(): """Тестирование функциональности сворачивания секций""" base_url = "http://localhost:9001" # 1. Вход в систему print("🔐 Вход в систему...") login_data = {"username": "admin", "password": "admin"} response = requests.post(f"{base_url}/api/auth/login", json=login_data) if response.status_code != 200: print(f"❌ Ошибка входа: {response.status_code}") return token = response.json()["access_token"] headers = {"Authorization": f"Bearer {token}"} print("✅ Вход выполнен успешно") # 2. Получение контейнеров print("\n🐳 Получение контейнеров...") response = requests.get(f"{base_url}/api/containers/services", headers=headers) if response.status_code != 200: print(f"❌ Ошибка получения контейнеров: {response.status_code}") return containers = response.json() print(f"✅ Контейнеров получено: {len(containers)}") # Анализируем контейнеры local_containers = [c for c in containers if not c.get('is_remote', False)] remote_containers = [c for c in containers if c.get('is_remote', False)] print(f"\n📊 Статистика контейнеров:") print(f" 📍 Локальные контейнеры: {len(local_containers)}") for container in local_containers: print(f" • {container['name']} ({container['status']})") print(f"\n 🌐 Удаленные контейнеры: {len(remote_containers)}") # Группируем удаленные контейнеры по хостам containers_by_host = {} for container in remote_containers: hostname = container.get('hostname', 'unknown') if hostname not in containers_by_host: containers_by_host[hostname] = [] containers_by_host[hostname].append(container) for hostname, host_containers in containers_by_host.items(): print(f" 🖥️ Хост: {hostname} ({len(host_containers)} контейнеров)") for container in host_containers: print(f" • {container['name']} ({container['status']})") # 3. Проверяем, что все контейнеры работающие stopped_containers = [c for c in containers if c['status'] != 'running'] if stopped_containers: print(f"\n⚠️ Найдены остановленные контейнеры:") for container in stopped_containers: print(f" • {container['name']} ({container['status']})") else: print(f"\n✅ Все контейнеры работают (остановленные отфильтрованы)") # 4. Проверяем структуру данных для сворачивания print(f"\n🔍 Проверка структуры данных для сворачивания:") # Проверяем локальные контейнеры if local_containers: print(f" 📍 Секция 'Локальные контейнеры' должна содержать {len(local_containers)} контейнеров") print(f" ID секции: local") print(f" Кнопка сворачивания: data-target='local'") print(f" Контент: id='local-content'") # Проверяем удаленные контейнеры if remote_containers: print(f" 🌐 Секция 'Удаленные контейнеры' должна содержать {len(remote_containers)} контейнеров") print(f" ID секции: remote") print(f" Кнопка сворачивания: data-target='remote'") print(f" Контент: id='remote-content'") # Проверяем секции хостов for hostname, host_containers in containers_by_host.items(): print(f" 🖥️ Подсекция '{hostname}' должна содержать {len(host_containers)} контейнеров") print(f" ID секции: host-{hostname}") print(f" Кнопка сворачивания: data-target='host-{hostname}'") print(f" Контент: id='host-{hostname}-content'") print(f"\n🎉 Проверка структуры завершена!") print(f"🌐 Откройте http://localhost:9001 в браузере") print(f" 📍 Проверьте, что секции 'Локальные контейнеры' и 'Удаленные контейнеры' можно сворачивать") print(f" 🖥️ Проверьте, что секции хостов внутри 'Удаленные контейнеры' можно сворачивать") print(f" ⚡ Проверьте, что остановленные контейнеры не отображаются в интерфейсе") if __name__ == "__main__": test_collapse_functionality()