Compare commits

...

2 Commits

Author SHA1 Message Date
Nicolas Roche 21e4d8ad9d toulouse-maelis: try to force updating maelis_notification_date (#90074)
gitea/passerelle/pipeline/head This commit looks good Details
2024-04-26 12:17:28 +02:00
Nicolas Roche 4ece47ecbb toulouse-maelis: [test] SOAPFault on paid invoice notification (#90074) 2024-04-26 12:16:40 +02:00
2 changed files with 45 additions and 1 deletions

View File

@ -4670,6 +4670,8 @@ class Invoice(models.Model):
)
return False
except SOAPError as e:
obj.maelis_notification_date = now()
obj.save()
self.resource.logger.error('fails to notify paid invoice %s (%s), stopping.', repr(obj), e)
result = {'error': str(e)}

View File

@ -11775,6 +11775,9 @@ def test_pay_invoice_job_error(invoice_service, con, app, freezer, caplog):
assert job.status == 'registered'
assert len(caplog.messages) == 1
assert 'fails to notify' in caplog.text
assert 'will retry later' in caplog.text
invoice = con.invoice_set.get(regie_id=102, invoice_id=30)
assert invoice.maelis_notification_date is None
freezer.tick(6 * 60)
con.jobs()
@ -11783,8 +11786,47 @@ def test_pay_invoice_job_error(invoice_service, con, app, freezer, caplog):
assert len(caplog.messages) == 1
invoice = con.invoice_set.get(regie_id=102, invoice_id=30)
invoice.refresh_from_db()
assert invoice.status() == 'notified'
assert invoice.maelis_notification_date is not None
def test_pay_invoice_job_soap_fault_error(invoice_service, con, app, freezer, caplog):
from passerelle.utils.soap import SOAPFault
class Fault:
detail = b'x'
message = 'boom!'
caplog.set_level('WARNING')
client = con.get_client('Invoice')
invoice_service.add_soap_response('readInvoices', get_xml_file('R_read_invoices.xml'))
invoice_service.add_soap_response('payInvoices', SOAPFault(client=client, fault=Fault()))
url = get_endpoint('regie/102/invoice/1312-30/pay/')
freezer.move_to('2023-03-03 18:39:00')
app.post_json(
url,
params={
'transaction_date': '2023-03-03T18:38:00',
'transaction_id': 'xxx',
},
)
job = Job.objects.get()
assert job.status == 'registered'
assert caplog.messages == []
freezer.move_to('2023-03-03 18:40:00')
con.jobs()
job.refresh_from_db()
assert job.status == 'completed'
assert len(caplog.messages) == 1
assert 'fails to notify' in caplog.text
assert 'stopping' in caplog.text
invoice = con.invoice_set.get(regie_id=102, invoice_id=30)
assert invoice.maelis_notification_date is not None
assert invoice.status() == 'error'
def test_pay_invoice_cron(invoice_service, con, app, freezer):