opengis: feature_info bad params (#22465)
do not crash if lat and/or lon params are not floats
This commit is contained in:
parent
a48500565c
commit
953a9262cd
|
@ -218,7 +218,10 @@ class OpenGIS(BaseResource):
|
|||
'lon': {'description': _('Longitude'), 'example_value': '4.78414'},
|
||||
})
|
||||
def feature_info(self, request, lat, lon):
|
||||
lat, lon = float(lat), float(lon)
|
||||
try:
|
||||
lat, lon = float(lat), float(lon)
|
||||
except ValueError:
|
||||
raise APIError('Bad coordinates format')
|
||||
bbox = self.get_bbox(lon - 0.0001, lat - 0.0001, lon + 0.0001, lat + 0.0001)
|
||||
params = {
|
||||
'VERSION': '1.3.0',
|
||||
|
|
|
@ -260,6 +260,20 @@ def test_feature_info(mocked_get, app, connector):
|
|||
assert mocked_get.call_args[1]['params']['CRS'] == 'EPSG:4326'
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
@pytest.mark.parametrize('lat,lon', [
|
||||
('bad-value', '4.784140'),
|
||||
('45.796890', 'bad-value'),
|
||||
])
|
||||
def test_feature_info_bad_request(mocked_get, app, connector, lat, lon):
|
||||
endpoint = utils.generic_endpoint_url('opengis', 'feature_info', slug=connector.slug)
|
||||
assert endpoint == '/opengis/test/feature_info'
|
||||
mocked_get.return_value = utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200)
|
||||
resp = app.get(endpoint, params={'lat': lat, 'lon': lon})
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'Bad coordinates format'
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_tile(mocked_get, app, connector):
|
||||
endpoint = utils.generic_endpoint_url('opengis', 'tile', slug=connector.slug)
|
||||
|
|
Loading…
Reference in New Issue