Changeset View
Changeset View
Standalone View
Standalone View
looper/tests/test_gateways.py
| from unittest import mock | from unittest import mock | ||||
| from django.contrib.auth.models import User | from django.contrib.auth.models import User | ||||
| from .. import exceptions, gateways, models, money | from .. import exceptions, gateways, models, money | ||||
| from . import AbstractBaseTestCase | from .base import AbstractBaseTestCase | ||||
| class GatewayModelTest(AbstractBaseTestCase): | class GatewayModelTest(AbstractBaseTestCase): | ||||
| def test_is_default(self): | def test_is_default(self): | ||||
| gw1 = models.Gateway.objects.create(name='gw1', is_default=True) | gw1 = models.Gateway.objects.create(name='gw1', is_default=True) | ||||
| gw2 = models.Gateway.objects.create(name='gw2', is_default=False) | gw2 = models.Gateway.objects.create(name='gw2', is_default=False) | ||||
| gw2.is_default = True | gw2.is_default = True | ||||
| ▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | |||||
| class BraintreeErrorTest(AbstractBaseTestCase): | class BraintreeErrorTest(AbstractBaseTestCase): | ||||
| def setUp(self): | def setUp(self): | ||||
| self.gateway = gateways.BraintreeGateway() | self.gateway = gateways.BraintreeGateway() | ||||
| def test_repeating_message(self): | def test_repeating_message(self): | ||||
| from braintree import ErrorResult | from braintree import ErrorResult | ||||
| mock_error = ErrorResult(self.gateway.braintree, { | mock_error = ErrorResult( | ||||
| self.gateway.braintree, | |||||
| { | |||||
| 'message': 'Payment method token is invalid', | 'message': 'Payment method token is invalid', | ||||
| 'errors': { | 'errors': { | ||||
| 'transaction': { | 'transaction': { | ||||
| 'errors': [{ | 'errors': [{'message': 'Payment method token is invalid', 'code': 91518}] | ||||
| 'message': 'Payment method token is invalid', | }, | ||||
| 'code': 91518, | |||||
| }] | |||||
| }, | }, | ||||
| }, | }, | ||||
| }) | ) | ||||
| err = gateways.BraintreeError(mock_error) | err = gateways.BraintreeError(mock_error) | ||||
| self.assertEqual('Payment method token is invalid', err.message) | self.assertEqual('Payment method token is invalid', err.message) | ||||
| self.assertEqual('code 91518', err.errors[0]) | self.assertEqual('code 91518', err.errors[0]) | ||||
| def test_nonrepeating_message(self): | def test_nonrepeating_message(self): | ||||
| from braintree import ErrorResult | from braintree import ErrorResult | ||||
| mock_error = ErrorResult(self.gateway.braintree, { | mock_error = ErrorResult( | ||||
| self.gateway.braintree, | |||||
| { | |||||
| 'message': 'Payment method token is invalid', | 'message': 'Payment method token is invalid', | ||||
| 'errors': { | 'errors': {'transaction': {'errors': [{'message': 'Be Creative', 'code': 47}]}}, | ||||
| 'transaction': { | |||||
| 'errors': [{ | |||||
| 'message': 'Be Creative', | |||||
| 'code': 47, | |||||
| }] | |||||
| }, | |||||
| }, | }, | ||||
| }) | ) | ||||
| err = gateways.BraintreeError(mock_error) | err = gateways.BraintreeError(mock_error) | ||||
| self.assertEqual('Payment method token is invalid', err.message) | self.assertEqual('Payment method token is invalid', err.message) | ||||
| self.assertEqual('Be Creative (code 47)', err.errors[0]) | self.assertEqual('Be Creative (code 47)', err.errors[0]) | ||||
| class BankGatewayTest(AbstractBaseTestCase): | class BankGatewayTest(AbstractBaseTestCase): | ||||
| fixtures = ['testuser', 'devfund'] | fixtures = ['testuser', 'devfund'] | ||||
| def setUp(self): | def setUp(self): | ||||
| super().setUp() | super().setUp() | ||||
| self.gateway = models.Gateway.objects.get(name='bank') | self.gateway = models.Gateway.objects.get(name='bank') | ||||
| def test_multiple_via_db(self): | def test_multiple_via_db(self): | ||||
| user1: User = User.objects.get(email='harry@blender.org') | user1: User = User.objects.get(email='harry@blender.org') | ||||
| user2 = User.objects.create_user(username='another', email='another@example.com') | user2 = User.objects.create_user(username='another', email='another@example.com') | ||||
| pmeth1 = user1.paymentmethod_set.create(gateway=self.gateway, | pmeth1 = user1.paymentmethod_set.create( | ||||
| token='bank', | gateway=self.gateway, token='bank', method_type='ba', recognisable_name='Bank Transfer' | ||||
| method_type='ba', | ) | ||||
| recognisable_name='Bank Transfer') | |||||
| pmeth2 = user2.paymentmethod_set.create( | |||||
| pmeth2 = user2.paymentmethod_set.create(gateway=self.gateway, | gateway=self.gateway, token='bank', method_type='ba', recognisable_name='Bank Transfer' | ||||
| token='bank', | ) | ||||
| method_type='ba', | |||||
| recognisable_name='Bank Transfer') | |||||
| self.assertNotEqual(pmeth1.id, pmeth2.id) | self.assertNotEqual(pmeth1.id, pmeth2.id) | ||||
| def test_multiple_via_customer(self): | def test_multiple_via_customer(self): | ||||
| user1: User = User.objects.get(email='harry@blender.org') | user1: User = User.objects.get(email='harry@blender.org') | ||||
| user2 = User.objects.create_user(username='another', email='another@example.com') | user2 = User.objects.create_user(username='another', email='another@example.com') | ||||
| cust1 = user1.customer | cust1 = user1.customer | ||||
| cust2 = user2.customer | cust2 = user2.customer | ||||
| pmeth1 = cust1.payment_method_add('useless-nonce', self.gateway) | pmeth1 = cust1.payment_method_add('useless-nonce', self.gateway) | ||||
| pmeth2 = cust2.payment_method_add('useless-nonce', self.gateway) | pmeth2 = cust2.payment_method_add('useless-nonce', self.gateway) | ||||
| self.assertNotEqual(pmeth1.id, pmeth2.id) | self.assertNotEqual(pmeth1.id, pmeth2.id) | ||||