test_logging_context.py 1.38 KB
from __future__ import annotations

from services.shared.logging import build_log_context
from services.shared.observability import CorrelationContext, correlation_scope


def test_build_log_context_uses_current_correlation_context():
    context = CorrelationContext(
        trace_id="trace-1",
        task_id="task-1",
        span_id="span-1",
        source="runtime",
        attributes={"request_id": "req-1", "empty": ""},
    )

    with correlation_scope(context):
        payload = build_log_context(component="crawler")

    assert payload == {
        "trace_id": "trace-1",
        "task_id": "task-1",
        "span_id": "span-1",
        "source": "runtime",
        "request_id": "req-1",
        "component": "crawler",
    }


def test_build_log_context_allows_explicit_values_to_override_current_context():
    context = CorrelationContext(
        trace_id="trace-old",
        task_id="task-old",
        span_id="span-old",
        source="runtime",
    )

    with correlation_scope(context):
        payload = build_log_context(
            trace_id="trace-new",
            task_id="task-new",
            span_id="span-new",
            source="web_api.app",
            host="0.0.0.0",
        )

    assert payload == {
        "trace_id": "trace-new",
        "task_id": "task-new",
        "span_id": "span-new",
        "source": "web_api.app",
        "host": "0.0.0.0",
    }