diff --git a/passerelle/apps/atal/models.py b/passerelle/apps/atal/models.py index 531b1157..908b4ba8 100644 --- a/passerelle/apps/atal/models.py +++ b/passerelle/apps/atal/models.py @@ -23,6 +23,7 @@ from django.db import models from django.utils import dateformat, dateparse from django.utils.translation import gettext_lazy as _ from zeep import helpers +from zeep.exceptions import Fault from passerelle.base.models import BaseResource from passerelle.utils.api import endpoint @@ -286,7 +287,11 @@ class ATALConnector(BaseResource): 'numeroDemande': post_data['numero_demande'], 'nomFichier': filename, } - self._soap_call(wsdl='ChargementPiecesJointesService', method='upload', **data) + try: + self._soap_call(wsdl='ChargementPiecesJointesService', method='upload', **data) + except Fault as e: + raise APIError(str(e)) + return {} @endpoint( diff --git a/tests/test_atal.py b/tests/test_atal.py index 471f1739..adae3dcb 100644 --- a/tests/test_atal.py +++ b/tests/test_atal.py @@ -7,6 +7,7 @@ import pytest from django.contrib.contenttypes.models import ContentType from django.utils.http import urlencode from requests import RequestException +from zeep.exceptions import Fault from passerelle.apps.atal.models import ATALConnector from passerelle.base.models import AccessRight, ApiUser @@ -189,6 +190,15 @@ def test_upload(app, connector, monkeypatch): } +def test_upload_file_too_big(app, connector, monkeypatch): + mock_atal_soap_call(monkeypatch, side_effect=Fault('File too big')) + base64_str = 'eyJsYXN0X2NoZWNrIjoiMjAxOS0wNC0xMFQxMjowODoyOVoiL' + 'CJweXBpX3ZlcnNpb24iOiIxOS4wLjMifQ==' + params = {'numero_demande': 'DIT19050001', 'nom_fichier': 'data.json', 'file': {'content': base64_str}} + response = app.post_json('/atal/slug-atal/upload', params=params) + assert response.json['err'] == 1 + assert response.json['err_desc'] == 'File too big' + + def test_retrieve_details_demande(app, connector, monkeypatch): import passerelle.utils