Projet

Général

Profil

0007-lingo-pass-PayFip-specific-data-to-eopayment-for-uni.patch

Benjamin Dauvergne, 26 octobre 2020 20:37

Télécharger (3,13 ko)

Voir les différences:

Subject: [PATCH 7/7] lingo: pass PayFip specific data to eopayment for unique
 item payment (#47506)

 combo/apps/lingo/views.py   |  5 +++++
 tests/test_lingo_payment.py | 29 +++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
combo/apps/lingo/views.py
419 419
            # copy command reference / invoice number
420 420
            if item.reference_id:
421 421
                kwargs['orderid'] = item.reference_id
422
            # PayFiP/TIPI specific
423
            if regie.payment_backend.service in ('payfip_ws', 'tipi'):
424
                if item.request_data and item.request_data.get('exer') and item.request_data.get('refdet'):
425
                    kwargs['exer'] = item.request_data['exer']
426
                    kwargs['refdet'] = item.request_data['refdet']
422 427
            # allow easy testing/use of backend specific keyword arguments
423 428
            EOPAYMENT_REQUEST_KWARGS_PREFIX = 'eopayment_request_kwargs_'
424 429
            if hasattr(item, 'request_data'):
tests/test_lingo_payment.py
1619 1619
    assert 'Grouping basket items is not allowed.' in app.session['_messages']
1620 1620
    assert len(caplog.records) == 1
1621 1621
    assert 'regie can only pay one basket item' in caplog.records[0].message
1622

  
1623

  
1624
def test_tipi_kwargs_can_pay_only_one_basket_item(app, basket_page, mono_regie, user):
1625
    item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item',
1626
                                     request_data={'refdet': 'F20201030', 'exer': '2020'})
1627
    resp = login(app).get(item.payment_url)
1628
    # with dummy refdet/exer are ignored
1629
    assert '2020' not in resp.location
1630

  
1631
    mono_regie.payment_backend.service = 'tipi'
1632
    mono_regie.payment_backend.save()
1633

  
1634
    resp = login(app).get(item.payment_url)
1635
    qs = urlparse.parse_qs(urlparse.urlparse(resp.location).query)
1636
    assert qs['refdet'][0] == 'F20201030'
1637
    assert qs['exer'][0] == '2020'
1638

  
1639

  
1640
@mock.patch('eopayment.payfip_ws.Payment.request', return_value=(1, eopayment.URL, 'https://payfip/'))
1641
def test_payfip_ws_kwargs_can_pay_only_one_basket_item(payment_request, app, basket_page, mono_regie, user):
1642
    item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item',
1643
                                     request_data={'refdet': 'F20201030', 'exer': '2020'})
1644
    mono_regie.payment_backend.service = 'payfip_ws'
1645
    mono_regie.payment_backend.save()
1646

  
1647
    resp = login(app).get(item.payment_url)
1648
    assert resp.location == 'https://payfip/'
1649
    assert payment_request.call_args[1]['refdet'] == 'F20201030'
1650
    assert payment_request.call_args[1]['exer'] == '2020'
1622
-