123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import logging
- import os
- from embedchain.telemetry.posthog import AnonymousTelemetry
- class TestAnonymousTelemetry:
- def test_init(self, mocker):
- # Enable telemetry specifically for this test
- os.environ["EC_TELEMETRY"] = "true"
- mock_posthog = mocker.patch("embedchain.telemetry.posthog.Posthog")
- telemetry = AnonymousTelemetry()
- assert telemetry.project_api_key == "phc_PHQDA5KwztijnSojsxJ2c1DuJd52QCzJzT2xnSGvjN2"
- assert telemetry.host == "https://app.posthog.com"
- assert telemetry.enabled is True
- assert telemetry.user_id
- mock_posthog.assert_called_once_with(project_api_key=telemetry.project_api_key, host=telemetry.host)
- def test_init_with_disabled_telemetry(self, mocker, monkeypatch):
- mocker.patch("embedchain.telemetry.posthog.Posthog")
- telemetry = AnonymousTelemetry()
- assert telemetry.enabled is False
- assert telemetry.posthog.disabled is True
- def test_get_user_id(self, mocker, tmpdir):
- mock_uuid = mocker.patch("embedchain.telemetry.posthog.uuid.uuid4")
- mock_uuid.return_value = "unique_user_id"
- config_file = tmpdir.join("config.json")
- mocker.patch("embedchain.telemetry.posthog.CONFIG_FILE", str(config_file))
- telemetry = AnonymousTelemetry()
- user_id = telemetry.get_user_id()
- assert user_id == "unique_user_id"
- assert config_file.read() == '{"user_id": "unique_user_id"}'
- def test_capture(self, mocker):
- # Enable telemetry specifically for this test
- os.environ["EC_TELEMETRY"] = "true"
- mock_posthog = mocker.patch("embedchain.telemetry.posthog.Posthog")
- telemetry = AnonymousTelemetry()
- event_name = "test_event"
- properties = {"key": "value"}
- telemetry.capture(event_name, properties)
- mock_posthog.assert_called_once_with(
- project_api_key=telemetry.project_api_key,
- host=telemetry.host,
- )
- mock_posthog.return_value.capture.assert_called_once_with(
- telemetry.user_id,
- event_name,
- properties,
- )
- def test_capture_with_exception(self, mocker, caplog):
- mock_posthog = mocker.patch("embedchain.telemetry.posthog.Posthog")
- mock_posthog.return_value.capture.side_effect = Exception("Test Exception")
- telemetry = AnonymousTelemetry()
- event_name = "test_event"
- properties = {"key": "value"}
- with caplog.at_level(logging.ERROR):
- telemetry.capture(event_name, properties)
- assert "Failed to send telemetry event" in caplog.text
|