from opentelemetry.sdk.trace import TracerProvider from app import telemetry from app.worker import origin_links def test_telemetry_is_fail_open_without_endpoint(monkeypatch) -> None: monkeypatch.delenv("OTEL_EXPORTER_OTLP_ENDPOINT", raising=False) monkeypatch.setattr(telemetry, "_runtime", None) assert telemetry.init_telemetry("sms-test") is None def test_structlog_processor_adds_active_trace_context() -> None: tracer = TracerProvider().get_tracer("test") with tracer.start_as_current_span("sms.operation"): result = telemetry.add_trace_context(None, "info", {"event": "sms.safe"}) assert result["event"] == "sms.safe" assert len(result["trace_id"]) == 32 assert len(result["span_id"]) == 16 def test_sms_worker_rejects_invalid_origin_context() -> None: assert origin_links(None) == [] assert origin_links("00-invalid") == []