Projet

Général

Profil

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

Benjamin Dauvergne, 10 octobre 2020 12:10

Télécharger (2,89 ko)

Voir les différences:

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

 combo/apps/lingo/views.py   |  6 ++++++
 tests/test_lingo_payment.py | 27 +++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)
combo/apps/lingo/views.py
439 439
            if item.reference_id:
440 440
                kwargs['orderid'] = item.reference_id
441 441

  
442
            # PayFiP/TIPI specific
443
            if regie.payment_backend.service in ('payfip_ws', 'tipi'):
444
                if item.request_data and item.request_data.get('exer') and item.request_data.get('refdet'):
445
                    kwargs['exer'] = item.request_data['exer']
446
                    kwargs['refdet'] = item.request_data['refdet']
447

  
442 448
            # allow easy testing/use of backend specific keyword arguments
443 449
            EOPAYMENT_REQUEST_KWARGS_PREFIX = 'eopayment_request_kwargs_'
444 450
            if hasattr(item, 'request_data'):
tests/test_lingo_payment.py
1606 1606
    assert 'Grouping basket items is not allowed.' in app.session['_messages']
1607 1607
    assert len(caplog.records) == 1
1608 1608
    assert 'regie can only pay one basket item' in caplog.records[0].message
1609

  
1610

  
1611
def test_tipi_kwargs_can_pay_only_one_basket_item(app, basket_page, mono_regie, user):
1612
    item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item',
1613
                                     request_data={'refdet': 'F20201030', 'exer': '2020'})
1614
    resp = login(app).get(item.payment_url)
1615
    # with dummy refdet/exer are ignored
1616
    assert '2020' not in resp.location
1617

  
1618
    mono_regie.payment_backend.service = 'tipi'
1619
    mono_regie.payment_backend.save()
1620

  
1621
    resp = login(app).get(item.payment_url)
1622
    qs = urlparse.parse_qs(urlparse.urlparse(resp.location).query)
1623
    assert qs['refdet'][0] == 'F20201030'
1624
    assert qs['exer'][0] == '2020'
1625

  
1626

  
1627
@mock.patch('eopayment.payfip_ws.Payment.request', return_value=(1, eopayment.URL, 'https://payfip/'))
1628
def test_payfip_ws_kwargs_can_pay_only_one_basket_item(payment_request, app, basket_page, mono_regie, user):
1629
    mono_regie.payment_backend.service = 'payfip_ws'
1630
    mono_regie.payment_backend.save()
1631

  
1632
    resp = login(app).get(item.payment_url)
1633
    assert resp.location == 'https://payfip/'
1634
    assert payment_request.call_args[1]['refdet'] == 'F20201030'
1635
    assert payment_request.call_args[1]['exer'] == '2020'
1609
-