def test_failure_order_additional_validation(self): """ Tests if HTTP304 when order additional validation signal raises ValidationError exception. """ def custom_validation_listener(sender=None, request=None, order=None, backend=None, **kwargs): raise ValidationError("BOOM!") suid = 'test-order_additional_validation' signals.order_additional_validation.connect(custom_validation_listener, dispatch_uid=suid) order = Order(name='Test order custom validation', total=100, currency='PLN') order.save() try: url = reverse('getpaid:new-payment', kwargs={'currency': 'PLN'}) data = {'order': order.pk, 'backend': 'getpaid.backends.payu'} response = self.client.post(url, data) self.assertEqual(response.status_code, 403) finally: signals.order_additional_validation.disconnect(dispatch_uid=suid)
def test_payment_get_paid(self, mock_Request): Payment = apps.get_model('getpaid', 'Payment') order = Order(name='Test EUR order', total='123.45', currency='PLN') order.save() payment = Payment(pk=99, order=order, amount=order.total, currency=order.currency, backend='getpaid.backends.payu') payment.save(force_insert=True) payment = Payment.objects.get( pk=99 ) # this line is because django bug https://code.djangoproject.com/ticket/5903 processor = getpaid.backends.payu.PaymentProcessor(payment) processor.get_payment_status(u'99:1342616247.41') self.assertEqual(payment.status, u'paid') self.assertNotEqual(payment.paid_on, None) self.assertNotEqual(payment.amount_paid, Decimal('0')) url = 'https://www.platnosci.pl/paygw/UTF/Payment/get/txt' callargs = mock_Request.call_args_list self.assertEqual(url, callargs[0][0][0]) if six.PY3: self.assertIsInstance(callargs[0][0][1], bytes) self.assertTrue(b'pos_id=123456789' in callargs[0][0][1]) self.assertTrue( b'session_id=99%3A1342616247.41' in callargs[0][0][1]) else: self.assertIsInstance(callargs[0][0][1], str) self.assertTrue('pos_id=123456789' in callargs[0][0][1]) self.assertTrue( 'session_id=99%3A1342616247.41' in callargs[0][0][1])
def test_online_payment_failure(self): Payment = get_model('getpaid', 'Payment') order = Order(name='Test EUR order', total='123.45', currency='PLN') order.save() payment = Payment(order=order, amount=order.total, currency=order.currency, backend='getpaid.backends.payu') payment.save(force_insert=True) self.assertEqual('TRUE', transferuj.PaymentProcessor.online('195.149.229.109', '1234', '1', '', payment.pk, '123.45', '23.45', '', False, 0, '', '21b028c2dbdcb9ca272d1cc67ed0574e')) payment = Payment.objects.get(pk=payment.pk) self.assertEqual(payment.status, 'failed')
def test_failure_create_payment_eur(self): """ Tests if payment fails when wrong currency for backend. PayU accepts only PLN currency payments. """ order = Order(name='Test EUR order', total=100, currency='EUR') order.save() response = self.client.post(reverse('getpaid-new-payment', kwargs={'currency': 'EUR'}), {'order': order.pk, 'backend': 'getpaid.backends.payu'}) self.assertEqual(response.status_code, 403)
def setUp(self): self.client = Client() Payment = apps.get_model('getpaid', 'Payment') order = Order(name='Test DKK order', total='123.45', currency='DKK') order.save() payment = Payment(order=order, amount=order.total, currency=order.currency, backend='getpaid.backends.epaydk') payment.save() self.test_payment = Payment.objects.get(pk=payment.id)
def test_online_payment_partial(self): Payment = apps.get_model('getpaid', 'Payment') order = Order(name='Test EUR order', total='123.45', currency='PLN') order.save() payment = Payment(order=order, amount=order.total, currency=order.currency, backend='getpaid.backends.payu') payment.save(force_insert=True) self.assertEqual('TRUE', PaymentProcessor.online('195.149.229.109', '1234', '1', '', payment.pk, '123.45', '23.45', '', 'TRUE', 0, '', '21b028c2dbdcb9ca272d1cc67ed0574e')) payment = Payment.objects.get(pk=payment.pk) self.assertEqual(payment.status, 'partially_paid') self.assertNotEqual(payment.paid_on, None) self.assertEqual(payment.amount_paid, Decimal('23.45'))
def test_payment_get_failed(self): Payment = apps.get_model('getpaid', 'Payment') order = Order(name='Test EUR order', total='123.45', currency='PLN') order.save() payment = Payment(pk=98, order=order, amount=order.total, currency=order.currency, backend='getpaid.backends.payu') payment.save(force_insert=True) payment = Payment.objects.get( pk=98) # this line is because django bug https://code.djangoproject.com/ticket/5903 processor = getpaid.backends.payu.PaymentProcessor(payment) processor.get_payment_status(u'98:1342616247.41') self.assertEqual(payment.status, u'failed') self.assertEqual(payment.paid_on, None) self.assertEqual(payment.amount_paid, Decimal('0'))
def test_get_payment_status_success(self): Payment = get_model('getpaid', 'Payment') order = Order(name='Test PLN order', total='123.45', currency='PLN') order.save() payment = Payment(pk=191, order=order, amount=order.total, currency=order.currency, backend='getpaid.backends.przelewy24') payment.save(force_insert=True) payment = Payment.objects.get(pk=191) processor = getpaid.backends.przelewy24.PaymentProcessor(payment) processor.get_payment_status(p24_session_id=u'191:xxx:xxx', p24_order_id=u'191:external', p24_kwota=u'12345') self.assertEqual(payment.status, 'paid') self.assertEqual(payment.external_id, '191:external') self.assertNotEqual(payment.paid_on, None) self.assertEqual(payment.amount_paid, Decimal('123.45'))
def test_successful_create_payment_payu_pln(self): """ Tests if payment is successfully created """ order = Order(name='Test PLN order', total=100, currency='PLN') order.save() test_url = reverse('getpaid:new-payment', kwargs={'currency': 'PLN'}) data = {'order': order.pk, 'backend': 'getpaid.backends.payu'} response = self.client.post(test_url, data) self.assertEqual(response.status_code, 302) Payment = apps.get_model('getpaid', 'Payment') payment = Payment.objects.get(order=order.pk) self.assertEqual(payment.backend, 'getpaid.backends.payu') self.assertEqual(payment.amount, order.total) self.assertEqual(payment.currency, order.currency) self.assertEqual(payment.status, 'in_progress') self.assertEqual(payment.paid_on, None) self.assertEqual(payment.amount_paid, 0)
def test_successful_create_payment_dummy_eur(self): """ Tests if payment is successfully created """ order = Order(name='Test EUR order', total=100, currency='EUR') order.save() response = self.client.post( reverse('getpaid-new-payment', kwargs={'currency': 'EUR'}), { 'order': order.pk, 'backend': 'getpaid.backends.dummy' }) self.assertEqual(response.status_code, 302) Payment = get_model('getpaid', 'Payment') payment = Payment.objects.get(order=order.pk) self.assertEqual(payment.backend, 'getpaid.backends.dummy') self.assertEqual(payment.amount, order.total) self.assertEqual(payment.currency, order.currency) self.assertEqual(payment.status, 'in_progress') self.assertEqual(payment.paid_on, None) self.assertEqual(payment.amount_paid, 0)
def test_order_view(self): order = Order(name='Test EUR order', total=100, currency='EUR') order.save() resp = self.client.get(order.get_absolute_url()) self.assertEqual(200, resp.status_code) self.assertTemplateUsed(resp, 'orders/order_detail.html')
def test_order_view(self): order = Order(name='Test EUR order', total=100, currency='EUR') order.save() self.assertTemplateUsed(self.client.get(order.get_absolute_url()), 'orders/order_detail.html')