45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import pytest
|
|
import os
|
|
import base64
|
|
from unittest.mock import MagicMock
|
|
from azure_maps_mcp import get_static_map, GetStaticMapInput
|
|
|
|
# Read API Key
|
|
try:
|
|
with open(".apikey", "r") as f:
|
|
API_KEY = f.read().strip()
|
|
except FileNotFoundError:
|
|
API_KEY = "dummy_key"
|
|
|
|
@pytest.fixture
|
|
def mock_context():
|
|
return MagicMock()
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def setup_env():
|
|
os.environ["AZURE_MAPS_SUBSCRIPTION_KEY"] = API_KEY
|
|
yield
|
|
if "AZURE_MAPS_SUBSCRIPTION_KEY" in os.environ:
|
|
del os.environ["AZURE_MAPS_SUBSCRIPTION_KEY"]
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_static_map_traffic(mock_context):
|
|
"""Test retrieving a map with the Traffic layer."""
|
|
params = GetStaticMapInput(
|
|
centerPoint="47.610,-122.107",
|
|
zoomLevel=12,
|
|
mapLayer="Traffic"
|
|
)
|
|
|
|
# We can't easily inspect the internal URL construction without mocking httpx,
|
|
# but we can verify that the call succeeds (returns valid image data)
|
|
# which implies the parameters were valid enough for Azure.
|
|
result = await get_static_map(params, mock_context)
|
|
|
|
if "error" in result:
|
|
pytest.fail(f"Tool returned error: {result['error']}")
|
|
|
|
assert result["image_data_base64"] is not None
|
|
img_data = base64.b64decode(result["image_data_base64"])
|
|
assert len(img_data) > 0
|