コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
def test_ipn_is_transaction_duplicated(txn_id, payment_status, expected):
    request.form = {'payment_status': 'Completed', 'txn_id': '12345'}
    rh = RHPaypalIPN()
    rh.registration = MagicMock()
    rh.registration.transaction = None
    assert not rh._is_transaction_duplicated()
    transaction = PaymentTransaction(provider='paypal', data={'payment_status': payment_status, 'txn_id': txn_id})
    rh.registration.transaction = transaction
    assert rh._is_transaction_duplicated() == expected
コード例 #4
0
def test_ipn_verify_amount(mocker, amount, currency, expected):
    nai = mocker.patch('indico_payment_paypal.controllers.notify_amount_inconsistency')
    rh = RHPaypalIPN()
    rh.event = MagicMock(id=1)
    rh.registration = MagicMock()
    rh.registration.price = 13.37
    rh.registration.currency = currency
    request.form = {'mc_gross': amount, 'mc_currency': 'EUR'}
    with PaypalPaymentPlugin.instance.plugin_context():
        assert rh._verify_amount() == expected
        assert nai.called == (not expected)
コード例 #5
0
def test_ipn_verify_amount(mocker, amount, currency, expected):
    nai = mocker.patch(
        'indico_payment_paypal.controllers.notify_amount_inconsistency')
    rh = RHPaypalIPN()
    rh.event = MagicMock(id=1)
    rh.registration = MagicMock()
    rh.registration.price = 13.37
    rh.registration.currency = currency
    request.form = {'mc_gross': amount, 'mc_currency': 'EUR'}
    with PaypalPaymentPlugin.instance.plugin_context():
        assert rh._verify_amount() == expected
        assert nai.called == (not expected)
コード例 #6
0
def test_ipn_is_transaction_duplicated(txn_id, payment_status, expected):
    request.form = {'payment_status': 'Completed', 'txn_id': '12345'}
    rh = RHPaypalIPN()
    rh.registration = MagicMock()
    rh.registration.transaction = None
    assert not rh._is_transaction_duplicated()
    transaction = PaymentTransaction(provider='paypal',
                                     data={
                                         'payment_status': payment_status,
                                         'txn_id': txn_id
                                     })
    rh.registration.transaction = transaction
    assert rh._is_transaction_duplicated() == expected
コード例 #7
0
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)
コード例 #8
0
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._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 = {'confId': 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)