import os import sys from contextlib import contextmanager PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if PROJECT_ROOT not in sys.path: sys.path.insert(0, PROJECT_ROOT) from observability.langfuse_tracing import propagate_conversation_session import observability.langfuse_tracing as tracing_module def test_propagate_conversation_session_uses_conversation_id_as_session(monkeypatch): captured: dict[str, object] = {} @contextmanager def fake_propagate_attributes(**kwargs): captured.update(kwargs) yield monkeypatch.setattr(tracing_module, "_langfuse_is_configured", lambda: True) monkeypatch.setattr( tracing_module, "propagate_attributes", fake_propagate_attributes, ) with propagate_conversation_session( conversation_id="conversation-123", metadata={"model": "cadagent", "turn": 2}, tags=["cadagent", "event_stream"], ): pass assert captured["session_id"] == "conversation-123" assert captured["tags"] == ["cadagent", "event_stream"] assert captured["metadata"] == { "conversation_id": "conversation-123", "model": "cadagent", "turn": "2", }