"""Тесты публичного эндпоинта настроек клиента (`/api/v1/public/settings`, сессия 33).""" import httpx import pytest_asyncio from sqlalchemy.ext.asyncio import AsyncSession from services.instance_settings import InstanceSettingsService, SettingsUpdateIn @pytest_asyncio.fixture(autouse=True) async def _reset_device_check(db_session: AsyncSession) -> None: """Сбросить `device_check_enabled` перед каждым тестом — общая dev-БД не изолирована от ручных правок администратора (та же дисциплина, что и `_reset_registration_gating` в `test_auth.py`); `db_session` не коммитится в реальную БД, см. `conftest.py`.""" await InstanceSettingsService(db_session).update(SettingsUpdateIn(device_check_enabled=False)) async def test_public_settings_disabled_by_default( client: httpx.AsyncClient, db_session: AsyncSession ) -> None: response = await client.get("/api/v1/public/settings") assert response.status_code == 200, response.text assert response.json() == {"device_check_enabled": False} async def test_public_settings_reflects_enabled( client: httpx.AsyncClient, db_session: AsyncSession ) -> None: await InstanceSettingsService(db_session).update(SettingsUpdateIn(device_check_enabled=True)) await db_session.commit() response = await client.get("/api/v1/public/settings") assert response.status_code == 200, response.text assert response.json() == {"device_check_enabled": True} async def test_public_settings_requires_no_auth( client: httpx.AsyncClient, db_session: AsyncSession ) -> None: """Эндпоинт публичный — работает без заголовка `Authorization`, как и обязан (обе страницы, которым он нужен, доступны до входа в систему).""" response = await client.get("/api/v1/public/settings") assert response.status_code == 200, response.text