Projet

Général

Profil

0001-opengis-feature_info-bad-params-22465.patch

Lauréline Guérin, 02 octobre 2019 15:12

Télécharger (2,22 ko)

Voir les différences:

Subject: [PATCH] opengis: feature_info bad params (#22465)

do not crash if lat and/or lon params are not floats
 passerelle/apps/opengis/models.py |  5 ++++-
 tests/test_opengis.py             | 14 ++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)
passerelle/apps/opengis/models.py
218 218
                  'lon': {'description': _('Longitude'), 'example_value': '4.78414'},
219 219
              })
220 220
    def feature_info(self, request, lat, lon):
221
        lat, lon = float(lat), float(lon)
221
        try:
222
            lat, lon = float(lat), float(lon)
223
        except ValueError:
224
            raise APIError('Bad coordinates format')
222 225
        bbox = self.get_bbox(lon - 0.0001, lat - 0.0001, lon + 0.0001, lat + 0.0001)
223 226
        params = {
224 227
            'VERSION': '1.3.0',
tests/test_opengis.py
260 260
    assert mocked_get.call_args[1]['params']['CRS'] == 'EPSG:4326'
261 261

  
262 262

  
263
@mock.patch('passerelle.utils.Request.get')
264
@pytest.mark.parametrize('lat,lon', [
265
    ('bad-value', '4.784140'),
266
    ('45.796890', 'bad-value'),
267
])
268
def test_feature_info_bad_request(mocked_get, app, connector, lat, lon):
269
    endpoint = utils.generic_endpoint_url('opengis', 'feature_info', slug=connector.slug)
270
    assert endpoint == '/opengis/test/feature_info'
271
    mocked_get.return_value = utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200)
272
    resp = app.get(endpoint, params={'lat': lat, 'lon': lon})
273
    assert resp.json['err'] == 1
274
    assert resp.json['err_desc'] == 'Bad coordinates format'
275

  
276

  
263 277
@mock.patch('passerelle.utils.Request.get')
264 278
def test_tile(mocked_get, app, connector):
265 279
    endpoint = utils.generic_endpoint_url('opengis', 'tile', slug=connector.slug)
266
-