Files
wehub-resource-sync c889a57b6b
Test Suites / Build CI Environment (push) Has been cancelled
Test Suites / Basic Tests (push) Has been cancelled
Test Suites / End-to-End Tests (push) Has been cancelled
Test Suites / CLI Tests (push) Has been cancelled
Test Suites / Slow End-to-End Tests (push) Has been cancelled
Test Suites / Graph Database Tests (push) Has been cancelled
Test Suites / Vector DB Tests (push) Has been cancelled
Test Suites / Temporal Graph Test (push) Has been cancelled
Test Suites / Search Test on Different DBs (push) Has been cancelled
Test Suites / Example Tests (push) Has been cancelled
Test Suites / Notebook Tests (push) Has been cancelled
Test Suites / OS and Python Tests Ubuntu (push) Has been cancelled
Test Suites / OS and Python Tests Extended (push) Has been cancelled
Test Suites / LLM Test Suite (push) Has been cancelled
Test Suites / S3 File Storage Test (push) Has been cancelled
Test Suites / Run Integration Tests (push) Has been cancelled
Test Suites / MCP Tests (push) Has been cancelled
Test Suites / Docker Compose Test (push) Has been cancelled
Test Suites / Docker CI test (push) Has been cancelled
Test Suites / Relational DB Migration Tests (push) Has been cancelled
Test Suites / Distributed Cognee Test (push) Has been cancelled
Test Suites / DB Examples Tests (push) Has been cancelled
Test Suites / Test Completion Status (push) Has been cancelled
Test Suites / Claude Code Review (push) Has been cancelled
Test Suites / basic checks (push) Has been cancelled
build | Build and Push Cognee MCP Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
build | Build and Push Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.11) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.12) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (kuzu, kuzu) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (neo4j, neo4j) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Examples (push) Has been cancelled
Weighted Edges Tests / Code Quality for Weighted Edges (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:02:24 +08:00

73 lines
2.7 KiB
Python

"""Unit tests for telemetry identity helpers."""
from collections.abc import Coroutine
from typing import Any
from cognee.shared import utils
from cognee.shared.utils import _get_api_key_tracking_id, send_telemetry
def test_api_key_tracking_id_uses_full_key_not_visible_tail(monkeypatch):
"""Keys sharing the same visible tail should still produce different IDs."""
monkeypatch.setenv("LLM_API_KEY", "provider-prefix-first-12345")
first = _get_api_key_tracking_id()
monkeypatch.setenv("LLM_API_KEY", "provider-prefix-second-12345")
second = _get_api_key_tracking_id()
assert first.startswith("ak_")
assert second.startswith("ak_")
assert first != second
assert "12345" not in first
assert "12345" not in second
def test_api_key_tracking_id_supports_deployment_salt(monkeypatch):
"""Deployments can isolate analytics IDs by setting a telemetry salt."""
monkeypatch.setenv("LLM_API_KEY", "provider-prefix-shared-key")
monkeypatch.setenv("TELEMETRY_API_KEY_TRACKING_SALT", "first-salt")
first = _get_api_key_tracking_id()
monkeypatch.setenv("TELEMETRY_API_KEY_TRACKING_SALT", "second-salt")
second = _get_api_key_tracking_id()
assert first != second
def test_send_telemetry_includes_api_key_tracking_id(monkeypatch):
"""Telemetry payloads expose a pseudonymous API-key ID for analytics grouping."""
payloads: list[dict[str, Any]] = []
def capture_payload(payload: dict[str, Any]) -> Coroutine[Any, Any, None]:
payloads.append(payload)
async def noop() -> None:
return None
return noop()
class CapturingLoop:
def create_task(self, coroutine: Coroutine[Any, Any, None]) -> None:
coroutine.close()
monkeypatch.setenv("ENV", "prod")
monkeypatch.delenv("TELEMETRY_DISABLED", raising=False)
monkeypatch.setenv("LLM_API_KEY", "provider-prefix-secret-12345")
monkeypatch.setattr(utils, "get_anonymous_id", lambda: "anonymous-test-id")
monkeypatch.setattr(utils, "get_persistent_id", lambda: "persistent-test-id")
monkeypatch.setattr(utils, "_send_telemetry_request", capture_payload)
monkeypatch.setattr(utils.asyncio, "get_running_loop", lambda: CapturingLoop())
send_telemetry("test_event", "user-123", {"url": "https://example.test/raw"})
assert len(payloads) == 1
payload = payloads[0]
tracking_id = payload["properties"]["api_key_tracking_id"]
assert tracking_id.startswith("ak_")
assert payload["user_properties"]["api_key_tracking_id"] == tracking_id
assert payload["properties"]["api_key_hash"] == tracking_id
assert payload["user_properties"]["api_key_hash"] == tracking_id
assert "12345" not in str(payload)
assert "provider-prefix-secret" not in str(payload)