Skip to content

Commit 95580f2

Browse files
authored
WMS Facade updates (#2303)
* WMS Facade updates: - added unit test for wms facade - removed trailing comma - prevent errors with non existing keys * - fixed flak8 errors * - removed bbox validation * - removed invalid bbox test * - fixed flak8
1 parent b9e81dd commit 95580f2

File tree

3 files changed

+67
-3
lines changed

3 files changed

+67
-3
lines changed

pygeoapi/api/maps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
'http://www.opengis.net/def/crs/EPSG/0/4326': 'http://www.opengis.net/def/crs/EPSG/0/4326', # noqa
7070
'http://www.opengis.net/def/crs/EPSG/0/3857': 'http://www.opengis.net/def/crs/EPSG/0/3857', # noqa
7171
'EPSG:4326': 'http://www.opengis.net/def/crs/EPSG/0/4326',
72-
'EPSG:3857': 'http://www.opengis.net/def/crs/EPSG/0/3857',
72+
'EPSG:3857': 'http://www.opengis.net/def/crs/EPSG/0/3857'
7373
}
7474

7575

pygeoapi/provider/wms_facade.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def query(self, style=None, bbox=[-180, -90, 180, 90], width=500,
8686

8787
version = self.options.get('version', '1.3.0')
8888

89-
if version == '1.3.0' and CRS_CODES[bbox_crs] == 'EPSG:4326':
89+
if version == '1.3.0' and CRS_CODES.get('bbox_crs') == 'EPSG:4326':
9090
bbox = [bbox[1], bbox[0], bbox[3], bbox[2]]
9191
bbox2 = ','.join(map(str, bbox))
9292

@@ -99,7 +99,7 @@ def query(self, style=None, bbox=[-180, -90, 180, 90], width=500,
9999
'service': 'WMS',
100100
'request': 'GetMap',
101101
'bbox': bbox2,
102-
crs_param: CRS_CODES[crs],
102+
crs_param: CRS_CODES.get(crs) or 'EPSG:4326',
103103
'layers': self.options['layer'],
104104
'styles': self.options.get('style', 'default'),
105105
'width': width,
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# =================================================================
2+
#
3+
# Authors: Joana Simoes <doublebyte@doublebyte.net>
4+
#
5+
#
6+
# Copyright (c) 2026 Joana Simoes
7+
#
8+
# Permission is hereby granted, free of charge, to any person
9+
# obtaining a copy of this software and associated documentation
10+
# files (the "Software"), to deal in the Software without
11+
# restriction, including without limitation the rights to use,
12+
# copy, modify, merge, publish, distribute, sublicense, and/or sell
13+
# copies of the Software, and to permit persons to whom the
14+
# Software is furnished to do so, subject to the following
15+
# conditions:
16+
#
17+
# The above copyright notice and this permission notice shall be
18+
# included in all copies or substantial portions of the Software.
19+
#
20+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22+
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24+
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25+
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27+
# OTHER DEALINGS IN THE SOFTWARE.
28+
#
29+
# =================================================================
30+
31+
import pytest
32+
33+
from pygeoapi.provider.wms_facade import WMSFacadeProvider
34+
35+
36+
@pytest.fixture()
37+
def config():
38+
return {
39+
'name': 'WMSFacade',
40+
'type': 'map',
41+
'data': 'https://demo.mapserver.org/cgi-bin/msautotest',
42+
'options': {
43+
'layer': 'world_latlong',
44+
'style': 'default'
45+
},
46+
'format': {
47+
'name': 'png',
48+
'mimetype': 'image/png'
49+
}
50+
}
51+
52+
53+
def test_query(config):
54+
p = WMSFacadeProvider(config)
55+
56+
results = p.query()
57+
assert len(results) > 0
58+
59+
# an invalid CRS should return the default bbox (4326)
60+
results2 = p.query(crs='http://www.opengis.net/def/crs/EPSG/0/1111')
61+
assert len(results2) == len(results)
62+
63+
results3 = p.query(crs='http://www.opengis.net/def/crs/EPSG/0/3857')
64+
assert len(results3) != len(results)

0 commit comments

Comments
 (0)