From 0aa6d2594afc29933e465504b3bb0c30ae2ad210 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 10 Oct 2020 08:28:09 +0200 Subject: [PATCH 5/7] lingo: allow passing custom kwargs to eopayment.request (#47506) --- combo/apps/lingo/views.py | 7 +++++++ tests/test_lingo_payment.py | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/combo/apps/lingo/views.py b/combo/apps/lingo/views.py index 04448173..f87b3d55 100644 --- a/combo/apps/lingo/views.py +++ b/combo/apps/lingo/views.py @@ -416,6 +416,13 @@ class PayMixin(object): if regie.can_pay_only_one_basket_item: item = (items or remote_items)[0] kwargs['subject'] = item.subject + # allow easy testing/use of backend specific keyword arguments + EOPAYMENT_REQUEST_KWARGS_PREFIX = 'eopayment_request_kwargs_' + if hasattr(item, 'request_data'): + for key in item.request_data: + if key.startswith(EOPAYMENT_REQUEST_KWARGS_PREFIX): + arg_name = key[len(EOPAYMENT_REQUEST_KWARGS_PREFIX):] + kwargs[arg_name] = item.request_data[key] if regie.transaction_options: kwargs.update(regie.transaction_options) try: diff --git a/tests/test_lingo_payment.py b/tests/test_lingo_payment.py index cfbcb1b7..6e03b875 100644 --- a/tests/test_lingo_payment.py +++ b/tests/test_lingo_payment.py @@ -1590,6 +1590,16 @@ def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, mono_r assert 'bar item' in resp.text +def test_extra_kwargs_can_pay_only_one_basket_item(app, basket_page, mono_regie, user): + item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item', + request_data={'eopayment_request_kwargs_info3': 'très fragile'}) + + resp = login(app).get(item.payment_url) + qs = urlparse.parse_qs(urlparse.urlparse(resp.location).query) + assert qs['subject'][0] == 'foo item', 'item.subject was not provided to eopayment' + assert qs['info3'][0] == 'très fragile' + + @mock.patch('combo.apps.lingo.models.BasketItem.get_items_to_be_paid') def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, mono_regie, user, user_name_id, caplog): item = mock.Mock(spec=['capture_date'], capture_date=None) -- 2.28.0