""" Тесты интеграции Django с sfu-server. """ from django.test import TestCase from django.contrib.auth import get_user_model from apps.video.services import get_sfu_client, SFUClientError from apps.schedule.models import Lesson from apps.video.models import VideoRoom import uuid User = get_user_model() class SFUClientTestCase(TestCase): """Тесты SFU клиента.""" def setUp(self): """Настройка тестов.""" self.mentor = User.objects.create_user( email='mentor@test.com', password='testpass123', role='mentor', first_name='Test', last_name='Mentor' ) self.client_user = User.objects.create_user( email='client@test.com', password='testpass123', role='client', first_name='Test', last_name='Client' ) def test_health_check(self): """Тест проверки доступности sfu-server.""" client = get_sfu_client() # В тестах может не быть запущенного sfu-server, поэтому просто проверяем что метод вызывается try: result = client.health_check() self.assertIsInstance(result, bool) except Exception as e: # Если sfu-server не доступен, это нормально для тестов pass def test_create_room(self): """Тест создания комнаты в sfu-server.""" client = get_sfu_client() room_id = str(uuid.uuid4()) try: result = client.create_room(room_id) self.assertIn('room_id', result) self.assertEqual(result['room_id'], room_id) self.assertEqual(result['status'], 'created') except SFUClientError: # Если sfu-server не доступен, пропускаем тест self.skipTest("SFU server not available") def test_get_room(self): """Тест получения информации о комнате.""" client = get_sfu_client() room_id = str(uuid.uuid4()) try: # Создаем комнату client.create_room(room_id) # Получаем информацию result = client.get_room(room_id) self.assertIn('room_id', result) self.assertEqual(result['room_id'], room_id) self.assertIn('peers_count', result) except SFUClientError: self.skipTest("SFU server not available") def test_delete_room(self): """Тест удаления комнаты.""" client = get_sfu_client() room_id = str(uuid.uuid4()) try: # Создаем комнату client.create_room(room_id) # Удаляем комнату result = client.delete_room(room_id) self.assertIn('room_id', result) self.assertEqual(result['status'], 'deleted') except SFUClientError: self.skipTest("SFU server not available") class VideoRoomSFUIntegrationTestCase(TestCase): """Тесты интеграции VideoRoom с sfu-server.""" def setUp(self): """Настройка тестов.""" self.mentor = User.objects.create_user( email='mentor@test.com', password='testpass123', role='mentor', first_name='Test', last_name='Mentor' ) self.client_user = User.objects.create_user( email='client@test.com', password='testpass123', role='client', first_name='Test', last_name='Client' ) # Создаем занятие self.lesson = Lesson.objects.create( mentor=self.mentor, client=self.client_user, title='Test Lesson', start_time='2025-12-10T10:00:00Z', duration=60, status='confirmed' ) def test_video_room_creation_creates_sfu_room(self): """Тест что создание VideoRoom создает комнату в sfu-server.""" try: video_room = VideoRoom.objects.create( lesson=self.lesson, mentor=self.mentor, client=self.client_user ) # Проверяем что комната создана в sfu-server sfu_client = get_sfu_client() sfu_room = sfu_client.get_room(str(video_room.room_id)) self.assertEqual(sfu_room['room_id'], str(video_room.room_id)) self.assertEqual(sfu_room['status'], 'active') except SFUClientError: self.skipTest("SFU server not available")