Files
core/tests/test_fixtures.py
Untone 4b88a8c449
Some checks failed
Deploy on push / deploy (push) Failing after 1m11s
ci-testing
2025-08-17 11:09:29 +03:00

152 lines
5.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Тесты для проверки работы фикстур pytest.
"""
import pytest
import requests
@pytest.mark.unit
def test_frontend_url_fixture(frontend_url):
"""Тест фикстуры frontend_url"""
assert frontend_url is not None
assert isinstance(frontend_url, str)
assert frontend_url.startswith("http")
# Проверяем что URL соответствует настройкам
# По умолчанию должен быть http://localhost:3000
# Но в тестах может быть переопределен
print(f"📊 frontend_url: {frontend_url}")
print(f"📊 Ожидаемый по умолчанию: http://localhost:3000")
# В тестах может быть любой валидный URL
assert "localhost" in frontend_url or "127.0.0.1" in frontend_url
@pytest.mark.unit
def test_backend_url_fixture(backend_url):
"""Тест фикстуры backend_url"""
assert backend_url == "http://localhost:8000"
@pytest.mark.unit
def test_test_user_credentials_fixture(test_user_credentials):
"""Тест фикстуры test_user_credentials"""
assert test_user_credentials is not None
assert "email" in test_user_credentials
assert "password" in test_user_credentials
assert test_user_credentials["email"] == "test_admin@discours.io"
assert test_user_credentials["password"] == "password123"
@pytest.mark.unit
def test_auth_headers_fixture(auth_headers):
"""Тест фикстуры auth_headers"""
headers = auth_headers()
assert headers["Content-Type"] == "application/json"
# Тест с токеном
token = "test_token_123"
headers_with_token = auth_headers(token)
assert headers_with_token["Content-Type"] == "application/json"
assert headers_with_token["Authorization"] == f"Bearer {token}"
@pytest.mark.unit
def test_wait_for_server_fixture(wait_for_server):
"""Тест фикстуры wait_for_server"""
# Тест с несуществующим URL (должен вернуть False)
result = wait_for_server("http://localhost:9999", max_attempts=1, delay=0.1)
assert result is False
@pytest.mark.integration
def test_backend_server_fixture(backend_server):
"""Тест фикстуры backend_server"""
# Фикстура должна вернуть True если сервер запущен
assert backend_server is True
@pytest.mark.integration
def test_test_client_fixture(test_client):
"""Тест фикстуры test_client"""
from starlette.testclient import TestClient
assert isinstance(test_client, TestClient)
@pytest.mark.asyncio
@pytest.mark.integration
async def test_browser_context_fixture(browser_context):
"""Тест фикстуры browser_context"""
# Проверяем что контекст создан
assert browser_context is not None
# Создаем простую страницу для теста
page = await browser_context.new_page()
assert page is not None
# Закрываем страницу
await page.close()
@pytest.mark.asyncio
@pytest.mark.integration
async def test_page_fixture(page):
"""Тест фикстуры page"""
# Проверяем что страница создана
assert page is not None
# Проверяем что таймауты установлены
# (это внутренняя деталь Playwright, но мы можем проверить что страница работает)
try:
# Пытаемся перейти на пустую страницу
await page.goto("data:text/html,<html><body>Test</body></html>")
content = await page.content()
assert "Test" in content
except Exception as e:
# Если что-то пошло не так, это не критично для теста фикстуры
pytest.skip(f"Playwright не готов: {e}")
@pytest.mark.integration
def test_api_base_url_fixture(api_base_url):
"""Тест фикстуры api_base_url"""
assert api_base_url == "http://localhost:8000/graphql"
@pytest.mark.unit
def test_db_session_fixture(db_session):
"""Тест фикстуры db_session"""
# Проверяем что сессия создана
assert db_session is not None
# Проверяем что можем выполнить простой запрос
from sqlalchemy import text
result = db_session.execute(text("SELECT 1"))
assert result.scalar() == 1
@pytest.mark.unit
def test_test_engine_fixture(test_engine):
"""Тест фикстуры test_engine"""
# Проверяем что engine создан
assert test_engine is not None
# Проверяем что можем выполнить простой запрос
from sqlalchemy import text
with test_engine.connect() as conn:
result = conn.execute(text("SELECT 1"))
assert result.scalar() == 1
@pytest.mark.unit
def test_test_session_factory_fixture(test_session_factory):
"""Тест фикстуры test_session_factory"""
# Проверяем что фабрика создана
assert test_session_factory is not None
# Проверяем что можем создать сессию
session = test_session_factory()
assert session is not None
session.close()