def test_ipn_process(mocker, fail): rt = mocker.patch('indico_payment_paypal.controllers.register_transaction') post = mocker.patch('indico_payment_paypal.controllers.requests.post') mocker.patch( 'indico_payment_paypal.controllers.notify_amount_inconsistency') post.return_value.text = 'INVALID' if fail == 'verify' else 'VERIFIED' rh = RHPaypalIPN() rh._verify_business = MagicMock() rh._is_transaction_duplicated = lambda: fail == 'dup_txn' rh.event = MagicMock(id=1) rh.registration = MagicMock() rh.registration.getTotal.return_value = 10.00 payment_status = { 'fail': 'Failed', 'refund': 'Refunded', 'status': 'Foobar' }.get(fail, 'Completed') amount = '-10.00' if fail == 'negative' else '10.00' request.view_args = {'event_id': rh.event.id} request.args = {'registrantId': '1'} request.form = { 'payment_status': payment_status, 'txn_id': '12345', 'mc_gross': amount, 'mc_currency': 'EUR', 'business': '*****@*****.**' } with PaypalPaymentPlugin.instance.plugin_context(): rh._process() assert post.called assert rt.called == (fail is None)
def test_ipn_verify_business(formdata, expected, dummy_event): rh = RHPaypalIPN() rh.registration = MagicMock() rh.registration.registration_form.event = dummy_event PaypalPaymentPlugin.event_settings.set(dummy_event, 'business', 'test') request.form = formdata with PaypalPaymentPlugin.instance.plugin_context(): assert rh._verify_business() == expected