opengis: feature_info bad params (#22465)

do not crash if lat and/or lon params are not floats
This commit is contained in:
Lauréline Guérin 2019-10-02 11:19:30 +02:00
parent a48500565c
commit 953a9262cd
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 18 additions and 1 deletions

View File

@ -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',

View File

@ -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)