mirror of https://github.com/langgenius/dify.git
70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
"""Unit tests for enterprise telemetry Celery task."""
|
|
|
|
import json
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from enterprise.telemetry.contracts import TelemetryCase, TelemetryEnvelope
|
|
from tasks.enterprise_telemetry_task import process_enterprise_telemetry
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_envelope_json():
|
|
envelope = TelemetryEnvelope(
|
|
case=TelemetryCase.APP_CREATED,
|
|
tenant_id="test-tenant",
|
|
event_id="test-event-123",
|
|
payload={"app_id": "app-123"},
|
|
)
|
|
return envelope.model_dump_json()
|
|
|
|
|
|
def test_process_enterprise_telemetry_success(sample_envelope_json):
|
|
with patch("tasks.enterprise_telemetry_task.EnterpriseMetricHandler") as mock_handler_class:
|
|
mock_handler = MagicMock()
|
|
mock_handler_class.return_value = mock_handler
|
|
|
|
process_enterprise_telemetry(sample_envelope_json)
|
|
|
|
mock_handler.handle.assert_called_once()
|
|
call_args = mock_handler.handle.call_args[0][0]
|
|
assert isinstance(call_args, TelemetryEnvelope)
|
|
assert call_args.case == TelemetryCase.APP_CREATED
|
|
assert call_args.tenant_id == "test-tenant"
|
|
assert call_args.event_id == "test-event-123"
|
|
|
|
|
|
def test_process_enterprise_telemetry_invalid_json(caplog):
|
|
invalid_json = "not valid json"
|
|
|
|
process_enterprise_telemetry(invalid_json)
|
|
|
|
assert "Failed to process enterprise telemetry envelope" in caplog.text
|
|
|
|
|
|
def test_process_enterprise_telemetry_handler_exception(sample_envelope_json, caplog):
|
|
with patch("tasks.enterprise_telemetry_task.EnterpriseMetricHandler") as mock_handler_class:
|
|
mock_handler = MagicMock()
|
|
mock_handler.handle.side_effect = Exception("Handler error")
|
|
mock_handler_class.return_value = mock_handler
|
|
|
|
process_enterprise_telemetry(sample_envelope_json)
|
|
|
|
assert "Failed to process enterprise telemetry envelope" in caplog.text
|
|
|
|
|
|
def test_process_enterprise_telemetry_validation_error(caplog):
|
|
invalid_envelope = json.dumps(
|
|
{
|
|
"case": "INVALID_CASE",
|
|
"tenant_id": "test-tenant",
|
|
"event_id": "test-event",
|
|
"payload": {},
|
|
}
|
|
)
|
|
|
|
process_enterprise_telemetry(invalid_envelope)
|
|
|
|
assert "Failed to process enterprise telemetry envelope" in caplog.text
|