From 10938a231d5a0ada2713ac2c41261ece3d652d11 Mon Sep 17 00:00:00 2001 From: Yunus Emre Ozen <94426948+ozenyunus35@users.noreply.github.com> Date: Fri, 16 Oct 2026 01:31:52 +0300 Subject: [PATCH] parse the maps transparent parameter as a boolean (#2444) --- pygeoapi/api/maps.py | 5 +++-- tests/api/test_maps.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/pygeoapi/api/maps.py b/pygeoapi/api/maps.py index 23ce03ca1e..5926c90cb3 100644 --- a/pygeoapi/api/maps.py +++ b/pygeoapi/api/maps.py @@ -52,7 +52,7 @@ from pygeoapi.provider.base import ( ProviderGenericError, ProviderInvalidDataError ) -from pygeoapi.util import to_json, filter_dict_by_key_value +from pygeoapi.util import str2bool, to_json, filter_dict_by_key_value from . import APIRequest, API, validate_datetime, validate_subset @@ -132,7 +132,8 @@ def get_collection_map(api: API, request: APIRequest, LOGGER.debug(f'Using bbox-crs: {query_args['bbox-crs']}') - query_args['transparent'] = request.params.get('transparent', True) + query_args['transparent'] = str2bool( + request.params.get('transparent', True)) try: query_args['width'] = int(request.params.get('width', 500)) diff --git a/tests/api/test_maps.py b/tests/api/test_maps.py index b13228d2f7..81759d3332 100644 --- a/tests/api/test_maps.py +++ b/tests/api/test_maps.py @@ -34,6 +34,9 @@ from http import HTTPStatus +import pytest + +from pygeoapi.api import maps from pygeoapi.api.maps import get_collection_map from tests.util import mock_api_request @@ -64,6 +67,31 @@ def test_get_collection_map(config, api_): assert code == HTTPStatus.NOT_IMPLEMENTED +@pytest.mark.parametrize('value, expected', [ + (None, True), + ('true', True), + ('True', True), + ('false', False), + ('False', False), +]) +def test_get_collection_map_transparent(api_, monkeypatch, value, expected): + seen = {} + + class Provider: + def query(self, **kwargs): + seen.update(kwargs) + return b'image' + + monkeypatch.setattr(maps, 'load_plugin', lambda *args: Provider()) + + params = {} if value is None else {'transparent': value} + req = mock_api_request(params) + _, code, _ = get_collection_map(api_, req, 'mapserver_world_map') + + assert code == HTTPStatus.OK + assert seen['transparent'] is expected + + def test_map_crs_transform(config, api_): # Florida in EPSG:4326 params = {