mirror of
https://github.com/ipnet-mesh/meshcore-hub.git
synced 2026-03-28 17:42:56 +01:00
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
60 lines
2.3 KiB
Python
60 lines
2.3 KiB
Python
"""Tests for message API routes."""
|
|
|
|
|
|
class TestListMessages:
|
|
"""Tests for GET /messages endpoint."""
|
|
|
|
def test_list_messages_empty(self, client_no_auth):
|
|
"""Test listing messages when database is empty."""
|
|
response = client_no_auth.get("/api/v1/messages")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["items"] == []
|
|
assert data["total"] == 0
|
|
|
|
def test_list_messages_with_data(self, client_no_auth, sample_message):
|
|
"""Test listing messages with data in database."""
|
|
response = client_no_auth.get("/api/v1/messages")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert len(data["items"]) == 1
|
|
assert data["total"] == 1
|
|
assert data["items"][0]["text"] == sample_message.text
|
|
assert data["items"][0]["message_type"] == sample_message.message_type
|
|
|
|
def test_list_messages_filter_by_type(self, client_no_auth, sample_message):
|
|
"""Test filtering messages by type."""
|
|
response = client_no_auth.get("/api/v1/messages?message_type=direct")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert len(data["items"]) == 1
|
|
|
|
response = client_no_auth.get("/api/v1/messages?message_type=channel")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert len(data["items"]) == 0
|
|
|
|
def test_list_messages_pagination(self, client_no_auth):
|
|
"""Test message list pagination parameters."""
|
|
response = client_no_auth.get("/api/v1/messages?limit=25&offset=10")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["limit"] == 25
|
|
assert data["offset"] == 10
|
|
|
|
|
|
class TestGetMessage:
|
|
"""Tests for GET /messages/{id} endpoint."""
|
|
|
|
def test_get_message_success(self, client_no_auth, sample_message):
|
|
"""Test getting a specific message."""
|
|
response = client_no_auth.get(f"/api/v1/messages/{sample_message.id}")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert data["text"] == sample_message.text
|
|
|
|
def test_get_message_not_found(self, client_no_auth):
|
|
"""Test getting a non-existent message."""
|
|
response = client_no_auth.get("/api/v1/messages/nonexistent-id")
|
|
assert response.status_code == 404
|