Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ Example Purchase API Usage
import twocheckout


twocheckout.Api.auth_credentials({
api = twocheckout.Api()

api.auth_credentials({
'private_key': '3508079E-5383-44D4-BF69-DC619C0D9811',
'seller_id': '1817037',
'mode': 'production'
Expand All @@ -63,7 +65,7 @@ params = {
}

try:
result = twocheckout.Charge.authorize(params)
result = twocheckout.Charge.authorize(api, params)
print result.responseCode
except TwocheckoutError as error:
print error.msg
Expand Down Expand Up @@ -136,16 +138,17 @@ Example Admin API Usage
```python
import twocheckout

api = twocheckout.Api()

twocheckout.Api.credentials({'username':'APIuser1817037', 'password':'APIpass1817037'})
api.credentials({'username':'APIuser1817037', 'password':'APIpass1817037'})

params = {
'sale_id': 4774467596,
'category': 1,
'comment': "Refunding Sale"
}

sale = twocheckout.Sale.find(params)
sale = twocheckout.Sale.find(api, params)
sale.refund(params);
```

Expand All @@ -170,7 +173,7 @@ params = {
'total': 1.00
}

form = twocheckout.Charge.submit(params)
form = twocheckout.Charge.submit(api, params)
```
*Example Response:*

Expand All @@ -193,7 +196,7 @@ Example Return Usage:
```python
params = web.input() # using web.py
params['secret'] = 'tango'
result = twocheckout.Passback.check(params)
result = twocheckout.Passback.check(api, params)
```

*Example Response:*
Expand All @@ -213,7 +216,7 @@ Example INS Usage:
```python
params = web.input() # using web.py
params['secret'] = 'tango'
result = twocheckout.Notification.check(params)
result = twocheckout.Notification.check(api, params)
```

*Example Response:*
Expand All @@ -235,7 +238,7 @@ TwocheckoutError exceptions are thrown by if an error has returned. It is best t

```python
try:
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(api, EXAMPLE_SALE)
invoice = sale.invoices[0]
lineitem = invoice.lineitems[0]
result = lineitem.refund(EXAMPLE_REFUND)
Expand Down
88 changes: 52 additions & 36 deletions test/test_twocheckout.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import datetime
import unittest
from twocheckout import TwocheckoutError

sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))

from twocheckout import TwocheckoutError
import twocheckout


Expand Down Expand Up @@ -77,49 +79,53 @@
}
}


class TwocheckoutTestCase(unittest.TestCase):
def setUp(self):
super(TwocheckoutTestCase, self).setUp()

twocheckout.Api.credentials({
self.api = twocheckout.Api()

self.api.credentials({
'username': 'testlibraryapi901248204',
'password': 'testlibraryapi901248204PASS',
'mode': 'sandbox'
})

twocheckout.Api.auth_credentials({
self.api.auth_credentials({
'private_key': 'BE632CB0-BB29-11E3-AFB6-D99C28100996',
'seller_id': '901248204',
'mode': 'sandbox'
})


class SaleTest(TwocheckoutTestCase):
def setUp(self):
super(SaleTest, self).setUp()

def test_1_find_sale(self):
try:
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
self.assertEqual(int(sale.sale_id), 9093717691800)
except TwocheckoutError as error:
self.assertEqual(error.message, "Unable to find record.")

def test_2_list_sale(self):
params = {'pagesize': 2}
list = twocheckout.Sale.list(params)
list = twocheckout.Sale.list(self.api, params)
self.assertEqual(len(list), 2)

def test_3_refund_sale(self):
try:
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
result = sale.refund(EXAMPLE_REFUND)
self.assertEqual(result.message, "refund added to invoice")
except TwocheckoutError as error:
self.assertEqual(error.message, "Invoice was already refunded.")

def test_4_refund_invoice(self):
try:
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
invoice = sale.invoices[0]
result = invoice.refund(EXAMPLE_REFUND)
self.assertEqual(result.message, "refund added to invoice")
Expand All @@ -128,7 +134,7 @@ def test_4_refund_invoice(self):

def test_5_refund_lineitem(self):
try:
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
invoice = sale.invoices[0]
lineitem = invoice.lineitems[0]
result = lineitem.refund(EXAMPLE_REFUND)
Expand All @@ -137,18 +143,18 @@ def test_5_refund_lineitem(self):
self.assertEqual(error.message, "Lineitem was already refunded.")

def test_6_stop_sale(self):
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
result = sale.stop()
self.assertEqual(result.response_message, "No active recurring lineitems")

def test_7_stop_invoice(self):
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
invoice = sale.invoices[0]
result = invoice.stop()
self.assertEqual(result.response_message, "No active recurring lineitems")

def test_6_stop_sale(self):
sale = twocheckout.Sale.find(EXAMPLE_SALE)
def test_6_stop_sale2(self):
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
invoice = sale.invoices[0]
try:
lineitem = invoice.lineitems[0]
Expand All @@ -157,164 +163,174 @@ def test_6_stop_sale(self):
self.assertEqual(error.message, "Lineitem is not scheduled to recur.")

def test_7_comment(self):
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
result = sale.comment(EXAMPLE_COMMENT)
self.assertEqual(result.response_message, "Created comment successfully.")

def test_8_ship(self):
try:
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
result = sale.ship(EXAMPLE_SHIP)
except TwocheckoutError as error:
self.assertEqual(error.message, "Sale already marked shipped.")

def test_9_reauth(self):
try:
sale = twocheckout.Sale.find(EXAMPLE_SALE)
sale = twocheckout.Sale.find(self.api, EXAMPLE_SALE)
sale.reauth()
except TwocheckoutError as error:
self.assertEqual(error.message, "Payment is already pending or deposited and cannot be reauthorized.")


class ProductTest(TwocheckoutTestCase):
def setUp(self):
super(ProductTest, self).setUp()

def test_1_create(self):
result = twocheckout.Product.create(EXAMPLE_PRODUCT)
result = twocheckout.Product.create(self.api, EXAMPLE_PRODUCT)
self.assertEqual(result.response_message, "Product successfully created")
EXAMPLE_PRODUCT['product_id'] = result.product_id

def test_2_find(self):
product = twocheckout.Product.find(EXAMPLE_PRODUCT)
product = twocheckout.Product.find(self.api, EXAMPLE_PRODUCT)
self.assertEqual(product.name, "Example Product")

def test_3_update(self):
product = twocheckout.Product.find(EXAMPLE_PRODUCT)
product = twocheckout.Product.find(self.api, EXAMPLE_PRODUCT)
EXAMPLE_PRODUCT['name'] = "Updated Name"
product = product.update(EXAMPLE_PRODUCT)
self.assertEqual(product.name, "Updated Name")

def test_4_delete(self):
product = twocheckout.Product.find(EXAMPLE_PRODUCT)
product = twocheckout.Product.find(self.api, EXAMPLE_PRODUCT)
result = product.delete(EXAMPLE_PRODUCT)
self.assertEqual(result.response_message, "Product successfully deleted.")

def test_5_list(self):
params = {'pagesize': 2}
list = twocheckout.Product.list(params)
list = twocheckout.Product.list(self.api, params)
self.assertEqual(len(list), 2)


class OptionTest(TwocheckoutTestCase):
def setUp(self):
super(OptionTest, self).setUp()

def test_1_create(self):
result = twocheckout.Option.create(EXAMPLE_OPTION)
result = twocheckout.Option.create(self.api, EXAMPLE_OPTION)
self.assertEqual(result.response_message, "Option created successfully")
EXAMPLE_OPTION['option_id'] = result.option_id

def test_2_find(self):
option = twocheckout.Option.find(EXAMPLE_OPTION)
option = twocheckout.Option.find(self.api, EXAMPLE_OPTION)
self.assertEqual(option.option_name, "Example Option")

def test_3_update(self):
option = twocheckout.Option.find(EXAMPLE_OPTION)
option = twocheckout.Option.find(self.api, EXAMPLE_OPTION)
params = dict()
params['option_name'] = "Updated Name"
option = option.update(params)
self.assertEqual(option.option_name, "Updated Name")

def test_4_delete(self):
option = twocheckout.Option.find(EXAMPLE_OPTION)
option = twocheckout.Option.find(self.api, EXAMPLE_OPTION)
result = option.delete(EXAMPLE_OPTION)
self.assertEqual(result.response_message, "Option deleted successfully")

def test_5_list(self):
params = {'pagesize': 3}
list = twocheckout.Option.list(params)
list = twocheckout.Option.list(self.api, params)
self.assertEqual(len(list), 3)


class CouponTest(TwocheckoutTestCase):
def setUp(self):
super(CouponTest, self).setUp()

def test_1_create(self):
result = twocheckout.Coupon.create(EXAMPLE_COUPON)
result = twocheckout.Coupon.create(self.api, EXAMPLE_COUPON)
EXAMPLE_COUPON['coupon_code'] = result.coupon_code
self.assertEqual(result.response_message, "Coupon successfully created")

def test_2_find(self):
coupon = twocheckout.Coupon.find(EXAMPLE_COUPON)
coupon = twocheckout.Coupon.find(self.api, EXAMPLE_COUPON)
self.assertEqual(coupon.coupon_code, EXAMPLE_COUPON['coupon_code'])

def test_3_update(self):
coupon = twocheckout.Coupon.find(EXAMPLE_COUPON)
coupon = twocheckout.Coupon.find(self.api, EXAMPLE_COUPON)
EXAMPLE_COUPON['date_expire'] = "2020-01-02"
coupon = coupon.update(EXAMPLE_COUPON)
self.assertEqual(coupon.date_expire, "2020-01-02")

def test_4_delete(self):
coupon = twocheckout.Coupon.find(EXAMPLE_COUPON)
coupon = twocheckout.Coupon.find(self.api, EXAMPLE_COUPON)
result = coupon.delete(EXAMPLE_COUPON)
self.assertEqual(result.response_message, "Coupon successfully deleted.")


class CompanyTest(TwocheckoutTestCase):
def setUp(self):
super(CompanyTest, self).setUp()

def test_1_retrieve(self):
company = twocheckout.Company.retrieve()
company = twocheckout.Company.retrieve(self.api)
self.assertEqual(company.vendor_id, "901248204")


class ContactTest(TwocheckoutTestCase):
def setUp(self):
super(ContactTest, self).setUp()

def test_1_create(self):
contact = twocheckout.Contact.retrieve()
contact = twocheckout.Contact.retrieve(self.api)
self.assertEqual(contact.vendor_id, "901248204")


class PaymentTest(TwocheckoutTestCase):
def setUp(self):
super(PaymentTest, self).setUp()

def test_1_pending(self):
payment = twocheckout.Payment.pending()
payment = twocheckout.Payment.pending(self.api)
self.assertEqual(payment.release_level, "300")

def test_2_list(self):
payments = twocheckout.Payment.list()
payments = twocheckout.Payment.list(self.api)
self.assertEqual(len(payments), 0)


class PassbackTest(TwocheckoutTestCase):
def setUp(self):
super(PassbackTest, self).setUp()

def test_1_check(self):
params = EXAMPLE_PASSBACK
result = twocheckout.Passback.check(params)
result = twocheckout.Passback.check(self.api, params)
self.assertEqual(result.response_code, "SUCCESS")


class NotificationTest(TwocheckoutTestCase):
def setUp(self):
super(NotificationTest, self).setUp()

def test_1_check(self):
params = EXAMPLE_NOTIFICATION
result = twocheckout.Notification.check(params)
result = twocheckout.Notification.check(self.api, params)
self.assertEqual(result.response_code, "SUCCESS")


class AuthorizationTest(TwocheckoutTestCase):
def setUp(self):
super(AuthorizationTest, self).setUp()

def test_1_auth(self):
params = EXAMPLE_AUTH
try:
result = twocheckout.Charge.authorize(params)
result = twocheckout.Charge.authorize(self.api, params)
self.assertEqual(result.responseCode, "APPROVED")
except TwocheckoutError as error:
self.assertEqual(error.msg, "Unauthorized")


if __name__ == '__main__':
unittest.main()
Loading