diff --git a/meshchatx.rsm b/meshchatx.rsm index ff854582..24b20d25 100644 Binary files a/meshchatx.rsm and b/meshchatx.rsm differ diff --git a/tests/backend/http_api_response_registry.py b/tests/backend/http_api_response_registry.py index d316ac13..3061ecdd 100644 --- a/tests/backend/http_api_response_registry.py +++ b/tests/backend/http_api_response_registry.py @@ -65,6 +65,9 @@ from tests.backend.http_api_response_schemas import ( LXMF_SIEVE_FILTERS_SCHEMA, MAINTENANCE_MESSAGES_PURGE_PREVIEW_SCHEMA, MAINTENANCE_MESSAGES_DUPLICATES_SCHEMA, + MAP_DATA_HEARD_SCHEMA, + MAP_DATA_PUBLISHED_SCHEMA, + MAP_DATA_STATUS_SCHEMA, MAP_DRAWINGS_SCHEMA, MAP_MBTILES_SCHEMA, MAP_OFFLINE_SCHEMA, @@ -403,6 +406,27 @@ HTTP_JSON_GET_CONTRACTS: tuple[HttpJsonContract, ...] = ( HttpJsonContract("GET", "/api/v1/map/drawings", MAP_DRAWINGS_SCHEMA), HttpJsonContract("GET", "/api/v1/map/offline", MAP_OFFLINE_SCHEMA), HttpJsonContract("GET", "/api/v1/map/mbtiles", MAP_MBTILES_SCHEMA), + HttpJsonContract( + "GET", + "/api/v1/map/data/status", + MAP_DATA_STATUS_SCHEMA, + allow_statuses=(200, 503), + alt_schemas=(ERROR_ENVELOPE_SCHEMA,), + ), + HttpJsonContract( + "GET", + "/api/v1/map/data/published", + MAP_DATA_PUBLISHED_SCHEMA, + allow_statuses=(200, 503), + alt_schemas=(ERROR_ENVELOPE_SCHEMA,), + ), + HttpJsonContract( + "GET", + "/api/v1/map/data/heard", + MAP_DATA_HEARD_SCHEMA, + allow_statuses=(200, 503), + alt_schemas=(ERROR_ENVELOPE_SCHEMA,), + ), HttpJsonContract("GET", "/api/v1/telemetry/peers", TELEMETRY_PEERS_SCHEMA), HttpJsonContract("GET", "/api/v1/telemetry/tracking", TELEMETRY_TRACKING_SCHEMA), HttpJsonContract( diff --git a/tests/backend/http_api_response_schemas.py b/tests/backend/http_api_response_schemas.py index c31fb87a..cf5be6c9 100644 --- a/tests/backend/http_api_response_schemas.py +++ b/tests/backend/http_api_response_schemas.py @@ -453,6 +453,45 @@ MAP_MBTILES_SCHEMA: dict = { "items": _OBJECT, } +MAP_DATA_STATUS_SCHEMA: dict = { + "type": "object", + "required": [ + "aspect", + "running", + "destination_hash", + "display_name", + "announce_enabled", + "announce_interval", + "max_bytes", + "published_count", + ], + "properties": { + "aspect": _STRING, + "running": _BOOLEAN, + "destination_hash": {"type": ["string", "null"]}, + "display_name": _STRING, + "announce_enabled": _BOOLEAN, + "announce_interval": _INTEGER, + "max_bytes": _INTEGER, + "published_count": _INTEGER, + }, + "additionalProperties": True, +} + +MAP_DATA_PUBLISHED_SCHEMA: dict = { + "type": "object", + "required": ["maps"], + "properties": {"maps": _ARRAY}, + "additionalProperties": True, +} + +MAP_DATA_HEARD_SCHEMA: dict = { + "type": "object", + "required": ["announces"], + "properties": {"announces": _ARRAY}, + "additionalProperties": True, +} + TELEMETRY_PEERS_SCHEMA: dict = { "type": "object", "required": ["telemetry"],