diff options
author | Michal Ociepka <michal@ociepka.info> | 2013-04-25 19:21:28 +0200 |
---|---|---|
committer | Michal Ociepka <michal@ociepka.info> | 2013-04-25 19:21:28 +0200 |
commit | 3782f31d6fda97826da994e3862f8cb5bffb2bf7 (patch) | |
tree | a56ae472d5cc1a1ffe130c6712354c5c848d743a /payments/dotpay | |
parent | d9a24c37bdf9b34dd0c23b0506aa4dbab08cc34e (diff) | |
download | django-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.py | 98 |
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.') |