Files
meshcore-hub/tests/test_api/test_telemetry.py
Claude 796e303665 Remove internal UUID fields from API responses
Internal database UUIDs (id, node_id, receiver_node_id) were being
exposed in API responses. These are implementation details that should
not be visible to API consumers. The canonical identifier for nodes
is the 64-char hex public_key.

Changes:
- Remove id, node_id from NodeTagRead, NodeRead schemas
- Remove id from MemberRead schema
- Remove id, receiver_node_id, node_id from MessageRead, AdvertisementRead,
  TracePathRead, TelemetryRead schemas
- Update web map component to use public_key instead of member.id
  for owner filtering
- Update tests to not assert on removed fields
2025-12-05 16:50:21 +00:00

54 lines
2.2 KiB
Python

"""Tests for telemetry API routes."""
class TestListTelemetry:
"""Tests for GET /telemetry endpoint."""
def test_list_telemetry_empty(self, client_no_auth):
"""Test listing telemetry when database is empty."""
response = client_no_auth.get("/api/v1/telemetry")
assert response.status_code == 200
data = response.json()
assert data["items"] == []
assert data["total"] == 0
def test_list_telemetry_with_data(self, client_no_auth, sample_telemetry):
"""Test listing telemetry with data in database."""
response = client_no_auth.get("/api/v1/telemetry")
assert response.status_code == 200
data = response.json()
assert len(data["items"]) == 1
assert data["total"] == 1
assert data["items"][0]["node_public_key"] == sample_telemetry.node_public_key
assert data["items"][0]["parsed_data"] == sample_telemetry.parsed_data
def test_list_telemetry_filter_by_node(self, client_no_auth, sample_telemetry):
"""Test filtering telemetry by node public key."""
response = client_no_auth.get(
f"/api/v1/telemetry?node_public_key={sample_telemetry.node_public_key}"
)
assert response.status_code == 200
data = response.json()
assert len(data["items"]) == 1
response = client_no_auth.get("/api/v1/telemetry?node_public_key=nonexistent")
assert response.status_code == 200
data = response.json()
assert len(data["items"]) == 0
class TestGetTelemetry:
"""Tests for GET /telemetry/{id} endpoint."""
def test_get_telemetry_success(self, client_no_auth, sample_telemetry):
"""Test getting a specific telemetry record."""
response = client_no_auth.get(f"/api/v1/telemetry/{sample_telemetry.id}")
assert response.status_code == 200
data = response.json()
assert data["node_public_key"] == sample_telemetry.node_public_key
def test_get_telemetry_not_found(self, client_no_auth):
"""Test getting a non-existent telemetry record."""
response = client_no_auth.get("/api/v1/telemetry/nonexistent-id")
assert response.status_code == 404