Projet

Général

Profil

0001-caluire-axel-handle-empty-message-on-pay_invoice-557.patch

Nicolas Roche (absent jusqu'au 3 avril), 23 juillet 2021 18:48

Télécharger (3,66 ko)

Voir les différences:

Subject: [PATCH] caluire-axel: handle empty message on pay_invoice (#55793)

 passerelle/contrib/caluire_axel/models.py | 11 +++++++++++
 tests/test_caluire_axel.py                | 24 +++++++++++++++++++++++
 2 files changed, 35 insertions(+)
passerelle/contrib/caluire_axel/models.py
1211 1211
        try:
1212 1212
            result = schemas.set_paiement(self, {'PORTAIL': {'SETPAIEMENT': post_data}})
1213 1213
        except axel.AxelError as e:
1214 1214
            raise APIError(
1215 1215
                'Axel error: %s' % e,
1216 1216
                err_code='error',
1217 1217
                data={'xml_request': e.xml_request, 'xml_response': e.xml_response},
1218 1218
            )
1219
        if not result.json_response['DATA']['PORTAIL']:
1220
            raise APIError(
1221
                'empty response',
1222
                err_code='empty-response',
1223
                data={
1224
                    'regie_id': regie_id,
1225
                    'family_id': family_id,
1226
                    'invoice': invoice,
1227
                    'payload': kwargs,
1228
                },
1229
            )
1219 1230

  
1220 1231
        code = result.json_response['DATA']['PORTAIL']['SETPAIEMENT']['CODE']
1221 1232
        if code < 0:
1222 1233
            raise APIError('Wrong pay-invoice status', err_code='pay-invoice-code-error-%s' % code)
1223 1234

  
1224 1235
        return {
1225 1236
            'created': True,
1226 1237
            'data': {
tests/test_caluire_axel.py
3366 3366
            operation.side_effect = AxelError('FooBar')
3367 3367
            resp = app.post_json(
3368 3368
                '/caluire-axel/test/upload_attachments?NameID=yyy', params=upload_attachments_params
3369 3369
            )
3370 3370
    assert resp.json['err_desc'] == "Axel error: FooBar"
3371 3371
    assert resp.json['err'] == 'error'
3372 3372

  
3373 3373

  
3374
def test_pay_invoice_providing_empty_response(app, resource):
3375
    payload = {
3376
        'transaction_date': '2021-06-15T12:00:00',
3377
        'transaction_id': 'foo',
3378
    }
3379
    with mock.patch(
3380
        'passerelle.contrib.caluire_axel.models.CaluireAxel.get_invoice',
3381
        return_value={'amount': '44.9'},
3382
    ):
3383
        with mock.patch('passerelle.contrib.caluire_axel.schemas.set_paiement') as operation:
3384
            operation.return_value = OperationResult(
3385
                json_response={'DATA': {'PORTAIL': {}}},
3386
                xml_request='',
3387
                xml_response='',
3388
            )
3389
            resp = app.post_json(
3390
                '/caluire-axel/test/regie/MAREGIE/invoice/XXX-42/pay?NameID=yyy', params=payload
3391
            )
3392
    assert resp.json['err'] == 'empty-response'
3393
    assert resp.json['err_desc'] == 'empty response'
3394
    for key in 'regie_id', 'family_id', 'invoice', 'payload':
3395
        assert key in resp.json['data'].keys()
3396

  
3397

  
3374 3398
@pytest.mark.parametrize('value', ['foo', '20/01/2020', '2020'])
3375 3399
def test_upload_attachments_endpoint_bad_date_format(app, resource, upload_attachments_params, value):
3376 3400
    Link.objects.create(resource=resource, name_id='yyy', family_id='XXX', person_id='42')
3377 3401
    upload_attachments_params['reference_date'] = value
3378 3402
    resp = app.post_json(
3379 3403
        '/caluire-axel/test/upload_attachments?NameID=yyy',
3380 3404
        params=upload_attachments_params,
3381 3405
        status=400,
3382
-