def test_required_fields_invalid_email_not_set(self): data = { 'total': 13.37, } globee_payment = GlobeePayment(payment_data=data) with self.assertRaises(ValidationError): globee_payment.check_required_fields()
def test_required_fields_invalid_total_not_set(self): data = { 'customer': { 'email': '*****@*****.**' }, } globee_payment = GlobeePayment(payment_data=data) with self.assertRaises(ValidationError): globee_payment.check_required_fields()
def test_required_fields_valid(self): data = { 'total': 13.37, 'customer': { 'name': 'foobar', 'email': '*****@*****.**' }, } globee_payment = GlobeePayment(payment_data=data) self.assertTrue(globee_payment.check_required_fields())
def test_required_fields_invalid_email(self): data = { 'total': 13.37, 'customer': { 'email': 'invalid_mail.com' }, } globee_payment = GlobeePayment(payment_data=data) with self.assertRaises(ValidationError): globee_payment.check_required_fields()
def test_create_payment_invalid_email_not_set(self): data = { 'total': 13.37, 'customer': { 'name': 'foobar', }, } globee_payment = GlobeePayment(payment_data=data) with self.assertRaises(ValidationError): globee_payment.create_request()
def test_create_payment_invalid_key(self): data = { 'total': 13.37, 'customer': { 'name': 'foobar', 'email': '*****@*****.**' }, } globee_payment = GlobeePayment(payment_data=data) self.assertTrue(globee_payment.check_required_fields()) with self.assertRaises(ValidationError): globee_payment.create_request()
def test_update_payment_invalid_payment_id(self): globee_payment = GlobeePayment() custom_payment_id = "NEWID" custom_store_reference = "NEWSTOREREF" updated_data = { "custom_payment_id": custom_payment_id, "custom_store_reference": custom_store_reference, 'customer': { 'email': '*****@*****.**' }, } globee_payment.payment_data = updated_data with self.assertRaises(ValidationError): globee_payment.update_payment_request("INVALID_KEY")
def test_create_payment_invalid_urls(self): data = { 'total': 13.37, 'customer': { 'email': '*****@*****.**' }, 'success_url': 'invalid-url', 'cancel_url': 'invalid-url', 'ipn_url': 'invalid-url', } globee_payment = GlobeePayment(payment_data=data) self.assertTrue(globee_payment.check_required_fields()) with self.assertRaises(ValidationError): globee_payment.create_request()
def test_get_payment_details_for_currency_valid(self): data = { 'total': 13.37, 'currency': 'EUR', 'customer': { 'name': 'foobar', 'email': '*****@*****.**' }, } globee_payment = GlobeePayment(payment_data=data) self.assertTrue(globee_payment.check_required_fields()) self.assertIn("https://test.globee.com/", globee_payment.create_request()) response = globee_payment.get_payment_currency_details("BTC") self.assertIsInstance(response, dict)
def test_create_payment_valid(self): data = { 'total': 13.37, 'currency': 'EUR', 'customer': { 'name': 'foobar', 'email': '*****@*****.**' }, } globee_payment = GlobeePayment(payment_data=data) self.assertTrue(globee_payment.check_required_fields()) self.assertIn("https://test.globee.com/", globee_payment.create_request()) self.assertIn("https://test.globee.com/", globee_payment.get_payment_url())
def globee_ipn_view(request): paranoid = getattr(settings, 'GLOBEE_PARANOID_MODE', False) auto_validate = getattr(settings, 'GLOBEE_AUTO_VERIFY', False) payment_response = request.body.decode("utf-8") payment_data = json_loads(payment_response) if auto_validate: globee_payment = GlobeePayment() payment_data = globee_payment.get_payment_by_id(payment_data['id']) pretty_data = json_dumps(payment_data, indent=4, sort_keys=True) logger.debug('Globee POST data: %s' % pretty_data) try: created_at = datetime.strptime(payment_data['created_at'], '%Y-%m-%d %H:%M:%S') expires_at = datetime.strptime(payment_data['expires_at'], '%Y-%m-%d %H:%M:%S') defaults = { 'payment_status': payment_data['status'], 'total': float(payment_data['total']), 'currency': payment_data['currency'], 'custom_payment_id': payment_data['custom_payment_id'], 'callback_data': payment_data['callback_data'], 'customer_email': payment_data['customer']['email'], 'customer_name': payment_data['customer']['name'], 'created_at': pytz_utc.localize(created_at), 'expires_at': pytz_utc.localize(expires_at), } payment, created = GlobeeIPN.objects.update_or_create( payment_id=payment_data['id'], defaults=defaults) payment.send_valid_signal() except KeyError as e: logger.error('Key %s not found in payment data.' % e) status = 200 if paranoid else 400 return HttpResponse(status=status) except (ValueError, ValidationError) as e: logger.error(e) status = 200 if paranoid else 400 return HttpResponse(status=status) return HttpResponse(status=200)
def test_update_payment_valid(self): data = { 'total': 13.37, 'currency': 'EUR', 'customer': { 'name': 'foobar', 'email': '*****@*****.**' }, } globee_payment = GlobeePayment(payment_data=data) self.assertTrue(globee_payment.check_required_fields()) self.assertIn("https://test.globee.com/", globee_payment.create_request()) custom_payment_id = "NEWID" custom_store_reference = "NEWSTOREREF" updated_data = { "custom_payment_id": custom_payment_id, "custom_store_reference": custom_store_reference, 'customer': { 'email': '*****@*****.**' }, } globee_payment.payment_data = updated_data response = globee_payment.update_payment_request() self.assertEqual(response['id'], globee_payment.payment_id) self.assertEqual(response['custom_payment_id'], custom_payment_id) self.assertEqual(response['custom_store_reference'], custom_store_reference)
def test_update_payment_invalid_payment_id_is_none(self): globee_payment = GlobeePayment() custom_payment_id = "NEWID" custom_store_reference = "NEWSTOREREF" updated_data = { "custom_payment_id": custom_payment_id, "custom_store_reference": custom_store_reference, } globee_payment.payment_data = updated_data globee_payment.payment_id = None with self.assertRaises(ValidationError): globee_payment.update_payment_request()
def test_update_payment_invalid_email_not_set(self): data = { 'total': 13.37, 'currency': 'EUR', 'customer': { 'name': 'foobar', 'email': '*****@*****.**' }, } globee_payment = GlobeePayment(payment_data=data) self.assertTrue(globee_payment.check_required_fields()) self.assertIn("https://test.globee.com/", globee_payment.create_request()) custom_payment_id = "NEWID" custom_store_reference = "NEWSTOREREF" updated_data = { "custom_payment_id": custom_payment_id, "custom_store_reference": custom_store_reference, } globee_payment.payment_data = updated_data with self.assertRaises(ValidationError): globee_payment.update_payment_request()
def test_update_payment_invalid_payment_data_is_none(self): globee_payment = GlobeePayment() globee_payment.payment_data = None globee_payment.payment_id = "SOME KEY" with self.assertRaises(ValidationError): globee_payment.update_payment_request()
def test_create_payment_invalid_empty_data(self): globee_payment = GlobeePayment() with self.assertRaises(ValidationError): globee_payment.check_required_fields() with self.assertRaises(ValidationError): globee_payment.create_request()
def test_init_invalid_key_is_empty(self): with self.assertRaises(ValidationError): globee_payment = GlobeePayment()
def test_get_payment_details_for_currency_invalid_payment_id_is_invalid( self): globee_payment = GlobeePayment() with self.assertRaises(ValidationError): globee_payment.get_payment_currency_details("BTC", "INVALID_KEY")
def test_get_payment_details_invalid_payment_id_is_none(self): globee_payment = GlobeePayment() with self.assertRaises(ValidationError): globee_payment.get_payment_details()
def test_ping_valid(self): globee_payment = GlobeePayment() self.assertTrue(globee_payment.ping())
def test_get_payment_methods_invalid(self): globee_payment = GlobeePayment() with self.assertRaises(ValidationError): globee_payment.get_payment_methods()
def test_get_payment_methods_valid(self): globee_payment = GlobeePayment() response = globee_payment.get_payment_methods() self.assertIsInstance(response, list)
def test_get_payment_invalid_empty_key(self): globee_payment = GlobeePayment() with self.assertRaises(ValidationError): globee_payment.get_payment_by_id()
def test_ping_invalid_key(self): globee_payment = GlobeePayment() with self.assertRaises(ValidationError): globee_payment.ping()
def test_get_payment_invalid(self): globee_payment = GlobeePayment() with self.assertRaises(ValidationError): globee_payment.get_payment_by_id("INVALID_KEY")