From 2eead5ee026e7df9fbca4da840c666edbf3d6f35 Mon Sep 17 00:00:00 2001 From: yucheng Date: Wed, 23 Sep 2026 08:45:38 +0000 Subject: [PATCH] test(langfuse_otel): cover null stripping and empty trace identities Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../integrations/test_langfuse_otel.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/test_litellm/integrations/test_langfuse_otel.py b/tests/test_litellm/integrations/test_langfuse_otel.py index 6a55a1b3106..720b81712f4 100644 --- a/tests/test_litellm/integrations/test_langfuse_otel.py +++ b/tests/test_litellm/integrations/test_langfuse_otel.py @@ -548,6 +548,42 @@ class TestLangfuseOtelIntegration: } assert not [key for key in actual if key.startswith("langfuse.trace.metadata.")] + def test_request_metadata_drops_null_fields_and_skips_empty_trace_identities( + self, monkeypatch: pytest.MonkeyPatch + ) -> None: + monkeypatch.setattr(litellm, "redact_user_api_key_info", False) + request_metadata: Final = { + "user_api_key_alias": "prod-key", + "user_api_key_user_id": "user-1", + "user_api_key_end_user_id": None, + "user_api_key_team_id": "", + "user_api_key_team_alias": None, + "team_id": None, + "team_alias": None, + "spend_logs_metadata": {"env": "prod"}, + } + kwargs: Final = { + "litellm_params": {"metadata": {}}, + "standard_logging_object": {"metadata": request_metadata}, + } + + with patch("litellm.integrations.arize._utils.safe_set_attribute") as mock_safe_set_attribute: + LangfuseOtelLogger._set_langfuse_specific_attributes(MagicMock(), kwargs, None) + + actual: Final = {call.args[1]: call.args[2] for call in mock_safe_set_attribute.call_args_list} + + assert json.loads(actual["langfuse.observation.metadata"]) == { + "user_api_key_alias": "prod-key", + "user_api_key_user_id": "user-1", + "user_api_key_team_id": "", + "spend_logs_metadata": {"env": "prod"}, + "requester_metadata": {}, + } + assert {key: value for key, value in actual.items() if key.startswith("langfuse.trace.metadata.")} == { + "langfuse.trace.metadata.user_api_key_alias": "prod-key", + "langfuse.trace.metadata.user_api_key_user_id": "user-1", + } + def test_request_metadata_keys_are_absent_without_standard_logging_object( self, monkeypatch: pytest.MonkeyPatch ) -> None: