api_entreprise: handle properly request errors (#33375)

This commit is contained in:
Serghei Mihai 2019-05-23 15:49:46 +02:00
parent 6f75a38b9d
commit cb5a42ab7c
2 changed files with 15 additions and 2 deletions

View File

@ -88,8 +88,7 @@ class APIEntreprise(BaseResource):
response = self.requests.get(url, data=params)
except requests.RequestException as e:
raise APIError(u'API-entreprise connection error: %s' %
response.status_code,
data={'error': exception_to_text(e)})
exception_to_text(e), data=[])
try:
data = response.json()
except ValueError as e:

View File

@ -18,6 +18,7 @@
import pytest
import mock
import requests
from httmock import urlmatch, HTTMock, response
@ -258,6 +259,9 @@ def api_entreprise_document_association(url, request):
def api_entreprise_error_500(url, request):
return response(500, 'bad error happened', request=request)
@urlmatch(netloc='^entreprise.api.gouv.fr$')
def api_entreprise_connection_error(url, request):
raise requests.RequestException('connection timed-out')
@urlmatch(netloc='^entreprise.api.gouv.fr$')
def api_entreprise_error_not_json(url, request):
@ -435,3 +439,13 @@ def test_error_404(app, resource, mock_api_entreprise):
assert response.status_code == 200
assert response.json['err'] == 1
assert response.json['err_desc'] == 'Page not found'
def test_connection_error(app, resource, mock_api_entreprise):
with HTTMock(api_entreprise_connection_error):
response = app.get('/api-entreprise/test/entreprises/443170139/',
params=REQUEST_PARAMS)
assert response.status_code == 200
assert response.json['err'] == 1
assert response.json['err_desc'] == 'API-entreprise connection error: connection timed-out'
assert response.json['data'] == []