"""Tests for main.py — startup behavior."""

import logging
from unittest.mock import patch

import pytest
from httpx import ASGITransport, AsyncClient

from main import app


# ─── Root canary ──────────────────────────────────────────────────────────────


@pytest.mark.asyncio
async def test_startup_logs_warning_when_running_as_root(caplog):
    """Lifespan emits a WARNING when the process uid is 0 (running as root)."""
    with patch("main.os.getuid", return_value=0), \
         patch("main.kraken_engine.load_models"), \
         patch("main.load_spell_checker"), \
         caplog.at_level(logging.WARNING, logger="main"):
        async with AsyncClient(transport=ASGITransport(app=app), base_url="http://test"):
            pass
    assert "Running as root" in caplog.text


@pytest.mark.asyncio
async def test_startup_does_not_warn_when_running_as_non_root(caplog):
    """Lifespan does not emit a root warning when running as a non-root user."""
    with patch("main.os.getuid", return_value=1000), \
         patch("main.kraken_engine.load_models"), \
         patch("main.load_spell_checker"), \
         caplog.at_level(logging.WARNING, logger="main"):
        async with AsyncClient(transport=ASGITransport(app=app), base_url="http://test"):
            pass
    assert "Running as root" not in caplog.text
