diff --git a/passerelle/apps/base_adresse/models.py b/passerelle/apps/base_adresse/models.py index 6caf53fe..f2546e32 100644 --- a/passerelle/apps/base_adresse/models.py +++ b/passerelle/apps/base_adresse/models.py @@ -142,7 +142,7 @@ class BaseAdresse(AddressResource): scheme, netloc, path, params, query, fragment = urlparse.urlparse(self.service_url) path = urlparse.urljoin(path, 'search/') - query_args = {'q': q, 'limit': page_limit} + query_args = {'q': q[:200], 'limit': page_limit} if zipcode: query_args['postcode'] = zipcode if citycode: diff --git a/tests/test_base_adresse.py b/tests/test_base_adresse.py index ec14fb3e..142d6496 100644 --- a/tests/test_base_adresse.py +++ b/tests/test_base_adresse.py @@ -3,7 +3,7 @@ import datetime import json import os -from urllib.parse import urljoin +from urllib.parse import parse_qs, urljoin import mock import pytest @@ -198,6 +198,15 @@ def test_base_adresse_search(mocked_get, app, base_adresse): assert data['display_name'] == 'Rue Roger Halope 49000 Angers' +@mock.patch('passerelle.utils.Request.get') +def test_base_adresse_search_limit_to_200(mocked_get, app, base_adresse): + endpoint = tests.utils.generic_endpoint_url('base-adresse', 'search', slug=base_adresse.slug) + assert endpoint == '/base-adresse/base-adresse/search' + mocked_get.return_value = tests.utils.FakedResponse(content=FAKED_CONTENT, status_code=200) + app.get(endpoint, params={'q': 'plop' * 200}, status=200) + assert len(parse_qs(mocked_get.call_args[0][0].split('?')[1])['q'][0]) == 200 + + @mock.patch('passerelle.utils.Request.get') def test_base_adresse_search_path(mocked_get, app, base_adresse): base_adresse.service_url = 'http://example.net/path/'