summaryrefslogtreecommitdiff
path: root/payments/dotpay
diff options
context:
space:
mode:
authorMichal Ociepka <michal@ociepka.info>2013-04-25 19:21:28 +0200
committerMichal Ociepka <michal@ociepka.info>2013-04-25 19:21:28 +0200
commit3782f31d6fda97826da994e3862f8cb5bffb2bf7 (patch)
treea56ae472d5cc1a1ffe130c6712354c5c848d743a /payments/dotpay
parentd9a24c37bdf9b34dd0c23b0506aa4dbab08cc34e (diff)
downloaddjango-payments-taler-3782f31d6fda97826da994e3862f8cb5bffb2bf7.tar.gz
django-payments-taler-3782f31d6fda97826da994e3862f8cb5bffb2bf7.tar.bz2
django-payments-taler-3782f31d6fda97826da994e3862f8cb5bffb2bf7.zip
Add test for the dotpay backend
Diffstat (limited to 'payments/dotpay')
-rw-r--r--payments/dotpay/tests.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/payments/dotpay/tests.py b/payments/dotpay/tests.py
new file mode 100644
index 0000000..319a5db
--- /dev/null
+++ b/payments/dotpay/tests.py
@@ -0,0 +1,98 @@
+from . import DotpayProvider
+from .. import PaymentItem
+from .forms import ACCEPTED
+from django.http import HttpResponse, HttpResponseForbidden
+from django.test import TestCase
+from mock import MagicMock
+import hashlib
+
+VARIANT = 'dotpay'
+PIN = '123'
+PROCESS_POST = {
+ 'status': 'OK',
+ 'id': '111',
+ 'control': '1',
+ 't_id': 't111',
+ 'amount': '100.0',
+ 'email': 'chf@o2.pl',
+ 't_status': str(ACCEPTED),
+ 'description': 'description',
+ 'md5': '?'}
+
+
+def get_post_with_md5(post):
+ post = post.copy()
+ key_vars = (
+ PIN,
+ post['id'],
+ post['control'],
+ post['t_id'],
+ post['amount'],
+ post.get('email', ''),
+ '', # service
+ '', # code
+ '', # username
+ '', # password
+ post['t_status'])
+ key = ':'.join(key_vars)
+ md5 = hashlib.md5()
+ md5.update(key)
+ key_hash = md5.hexdigest()
+ post['md5'] = key_hash
+ return post
+
+
+class Payment(MagicMock):
+
+ id = 1
+ variant = VARIANT
+ currency = 'USD'
+ total = 100
+
+ def get_cancel_url(self):
+ return 'http://cancel.com'
+
+ def get_success_url(self):
+ return 'http://success.com'
+
+
+class TestDotpayProvider(TestCase):
+
+ def setUp(self):
+ self.payment = Payment()
+ self.order_items = MagicMock()
+ self.order_items.__iter__.return_value = [PaymentItem('foo', 10, 100,
+ 'USD', 'd431')]
+
+ def test_get_hidden_fields(self):
+ '''
+ Tests if the get_hidden_fields returns a dictionary.
+ '''
+ provider = DotpayProvider(self.payment, VARIANT, self.order_items,
+ seller_id='123', pin=PIN)
+ self.assertEqual(type(provider.get_hidden_fields()), dict,
+ 'Should return a dictionary.')
+
+ def test_process_data(self):
+ '''
+ Tests if the process_dat returns a correct http response.
+ '''
+ request = MagicMock()
+ request.POST = get_post_with_md5(PROCESS_POST)
+ provider = DotpayProvider(self.payment, VARIANT, self.order_items,
+ seller_id='123', pin=PIN)
+ response = provider.process_data(request)
+ self.assertEqual(type(response), HttpResponse,
+ 'Should return a HttpResponse object.')
+
+ def test_uncorrect_process_data(self):
+ '''
+ Tests if the process_dat returns a correct http response.
+ '''
+ request = MagicMock()
+ request.POST = PROCESS_POST
+ provider = DotpayProvider(self.payment, VARIANT, self.order_items,
+ seller_id='123', pin=PIN)
+ response = provider.process_data(request)
+ self.assertEqual(type(response), HttpResponseForbidden,
+ 'Should return a HttpResponseForbidden object.')