"""Tests for MCP per-request user_id context."""
import pytest

from scribe.mcp._context import current_user_id, _user_id_ctx


def test_current_user_id_raises_when_unset():
    """No active context — must raise so tools don't silently fall back to a default."""
    _user_id_ctx.set(None)
    with pytest.raises(RuntimeError, match="no MCP user context"):
        current_user_id()


def test_current_user_id_returns_set_value():
    _user_id_ctx.set(42)
    assert current_user_id() == 42


def test_current_user_id_isolation_via_contextvar_token():
    """Reset via the token returned by set() restores prior state."""
    _user_id_ctx.set(1)
    token = _user_id_ctx.set(2)
    assert current_user_id() == 2
    _user_id_ctx.reset(token)
    assert current_user_id() == 1
