diff options
author | Mateusz Dereniowski <derenio@gmail.com> | 2015-08-12 18:09:48 +0200 |
---|---|---|
committer | Mateusz Dereniowski <derenio@gmail.com> | 2015-08-12 18:09:48 +0200 |
commit | f33975439380f89fbd260d646497a6c68c3db74b (patch) | |
tree | 4eb7fb1e5f8f85d3969db788741d5afc3125e306 /payments/stripe | |
parent | 5d7e83a66cf6cb109906478e4abd59439fedb3d4 (diff) | |
download | django-payments-taler-f33975439380f89fbd260d646497a6c68c3db74b.tar.gz django-payments-taler-f33975439380f89fbd260d646497a6c68c3db74b.tar.bz2 django-payments-taler-f33975439380f89fbd260d646497a6c68c3db74b.zip |
Add mocking of the "stripe.Charge.retrieve" to the Stripe's tests
Diffstat (limited to 'payments/stripe')
-rw-r--r-- | payments/stripe/test_stripe.py | 50 |
1 files changed, 44 insertions, 6 deletions
diff --git a/payments/stripe/test_stripe.py b/payments/stripe/test_stripe.py index 7db7430..1e018eb 100644 --- a/payments/stripe/test_stripe.py +++ b/payments/stripe/test_stripe.py @@ -1,4 +1,7 @@ +# -*- coding: utf-8 -*- from __future__ import unicode_literals +from contextlib import contextmanager + from mock import patch, MagicMock from unittest import TestCase import stripe @@ -19,13 +22,19 @@ class Payment(MagicMock): currency = 'USD' delivery = 10 status = 'waiting' + message = None tax = 10 total = 100 captured_amount = 0 transaction_id = None - def change_status(self, status): + def change_status(self, status, message=''): self.status = status + self.message = message + + def change_fraud_status(self, status, message='', commit=True): + self.fraud_status = status + self.fraud_message = message def get_failure_url(self): return 'http://cancel.com' @@ -40,6 +49,34 @@ class Payment(MagicMock): return 'http://success.com' +@contextmanager +def mock_stripe_Charge_create(error_msg): + json_body = { + 'error': { + 'charge': 'charge_id' + } + } + with patch('stripe.Charge.create') as mocked_charge_create: + mocked_charge_create.side_effect = stripe.CardError( + error_msg, param=None, code=None, json_body=json_body) + yield mocked_charge_create + + +@contextmanager +def mock_stripe_Charge_retrieve(fraudulent=False): + with patch('stripe.Charge.retrieve') as mocked_charge_retrieve: + fraud_details = { + 'stripe_report': None + } + if fraudulent: + fraud_details['stripe_report'] = 'fraudulent' + mocked_charge_retrieve.side_effect = lambda charge_id: { + 'id': charge_id, + 'fraud_details': fraud_details + } + yield mocked_charge_retrieve + + class TestStripeProvider(TestCase): def test_form_contains_stripe_script(self): @@ -83,15 +120,16 @@ class TestStripeProvider(TestCase): def test_provider_shows_validation_error_message(self): error_msg = 'Error message' + payment = Payment() provider = StripeProvider( name='Example.com store', secret_key=SECRET_KEY, public_key=PUBLIC_KEY) data = {'stripeToken': 'abcd'} - with patch('stripe.Charge.create') as mocked_charge: - mocked_charge.side_effect = stripe.CardError( - error_msg, param=None, code=None) - form = provider.get_form(payment, data=data) - self.assertEqual(form.errors['__all__'][0], error_msg) + with mock_stripe_Charge_create(error_msg): + with mock_stripe_Charge_retrieve(): + form = provider.get_form(payment, data=data) + self.assertEqual(form.errors['__all__'][0], error_msg) self.assertEqual(payment.status, 'error') + self.assertEqual(payment.message, error_msg) self.assertEqual(payment.captured_amount, 0) |