wcs: fix cards search engine when w.c.s. is down (#48409)
gitea-wip/combo/pipeline/head There was a failure building this commit Details
gitea/combo/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2020-11-10 09:32:19 +01:00
parent 154df07a3c
commit 6765819f29
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 24 additions and 1 deletions

View File

@ -52,7 +52,7 @@ class AppConfig(django.apps.AppConfig):
engines = {}
for key, service in wcs_services.items():
card_models = get_wcs_json(service, 'api/cards/@list')
for card in card_models.get('data', []):
for card in card_models.get('data') or []:
matching_pages = ([p for p in pages_with_sub_slug if '<%s_id>' % card['id'] in p.sub_slug])
if not matching_pages:
continue

View File

@ -12,6 +12,9 @@ from django.test.utils import CaptureQueriesContext
from django.urls import reverse
from django.utils.http import urlencode
from requests.exceptions import ConnectionError
from requests.models import Response
from combo.apps.search.engines import engines
from combo.apps.search.models import SearchCell, IndexedCell
from combo.apps.search.utils import index_site, search_site
@ -684,6 +687,26 @@ def test_wcs_search_engines(settings, app):
assert card_engine['hit_url_template'] == '/bar/{{ id }}'
def test_wcs_errors(settings, app):
settings.KNOWN_SERVICES = {'wcs': {'default': {'title': 'test', 'url': 'http://127.0.0.1:8999/'}}}
settings.TEMPLATE_VARS['is_portal_agent'] = True
Page.objects.create(slug='foo', title='Foo', sub_slug='(?P<foo_id>[a-z0-9]+)')
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
mock_resp = Response()
mock_resp.status_code = 500
requests_get.return_value = mock_resp
assert set(engines.get_engines().keys()) == set(['tracking-code', 'formdata:c21f969b', '_text'])
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
requests_get.side_effect = ConnectionError()
assert set(engines.get_engines().keys()) == set(['tracking-code', 'formdata:c21f969b', '_text'])
with mock.patch('combo.apps.wcs.utils.requests.get') as requests_get:
mock_resp = Response()
mock_resp.status_code = 404
requests_get.return_value = mock_resp
assert set(engines.get_engines().keys()) == set(['tracking-code', 'formdata:c21f969b', '_text'])
def test_profile_search_engines(settings, app):
settings.KNOWN_SERVICES = {}
search_engines = engines.get_engines()