mirror of https://github.com/langgenius/dify.git
60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
"""Unit tests for traceparent header propagation in EnterpriseRequest.
|
|
|
|
This test module verifies that the W3C traceparent header is properly
|
|
generated and included in HTTP requests made by EnterpriseRequest.
|
|
"""
|
|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from services.enterprise.base import EnterpriseRequest
|
|
|
|
|
|
class TestTraceparentPropagation:
|
|
"""Unit tests for traceparent header propagation."""
|
|
|
|
@pytest.fixture
|
|
def mock_enterprise_config(self):
|
|
"""Mock EnterpriseRequest configuration."""
|
|
with (
|
|
patch.object(EnterpriseRequest, "base_url", "https://enterprise-api.example.com"),
|
|
patch.object(EnterpriseRequest, "secret_key", "test-secret-key"),
|
|
patch.object(EnterpriseRequest, "secret_key_header", "Enterprise-Api-Secret-Key"),
|
|
):
|
|
yield
|
|
|
|
@pytest.fixture
|
|
def mock_httpx_client(self):
|
|
"""Mock httpx.Client for testing."""
|
|
with patch("services.enterprise.base.httpx.Client") as mock_client_class:
|
|
mock_client = MagicMock()
|
|
mock_client_class.return_value.__enter__.return_value = mock_client
|
|
mock_client_class.return_value.__exit__.return_value = None
|
|
|
|
# Setup default response
|
|
mock_response = MagicMock()
|
|
mock_response.json.return_value = {"result": "success"}
|
|
mock_client.request.return_value = mock_response
|
|
|
|
yield mock_client
|
|
|
|
def test_traceparent_header_included_when_generated(self, mock_enterprise_config, mock_httpx_client):
|
|
"""Test that traceparent header is included when successfully generated."""
|
|
# Arrange
|
|
expected_traceparent = "00-5b8aa5a2d2c872e8321cf37308d69df2-051581bf3bb55c45-01"
|
|
|
|
with patch("services.enterprise.base.generate_traceparent_header", return_value=expected_traceparent):
|
|
# Act
|
|
EnterpriseRequest.send_request("GET", "/test")
|
|
|
|
# Assert
|
|
mock_httpx_client.request.assert_called_once()
|
|
call_args = mock_httpx_client.request.call_args
|
|
headers = call_args[1]["headers"]
|
|
|
|
assert "traceparent" in headers
|
|
assert headers["traceparent"] == expected_traceparent
|
|
assert headers["Content-Type"] == "application/json"
|
|
assert headers["Enterprise-Api-Secret-Key"] == "test-secret-key"
|