Exemple #1
0
    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')
Exemple #4
0
 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)
Exemple #5
0
    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'))
Exemple #7
0
 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'))
Exemple #9
0
 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)
Exemple #10
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)
Exemple #11
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')
Exemple #12
0
 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')