def setUp(self): self.api = TransactionAPI('123', '456') self.success = lambda *args, **kwargs: SUCCESS.reset() or SUCCESS self.error = lambda *args, **kwargs: ERROR.reset() or ERROR self.year = date.today().year + 10 self.credit_card = CreditCard('4111111111111111', self.year, 1, '911') self.address = Address('45 Rose Ave', 'Venice', 'CA', '90291')
def __init__(self, login_id, transaction_key, debug=True, test=False): self.login_id = login_id self.transaction_key = transaction_key self.debug = debug self.test = test self._transaction = TransactionAPI(login_id, transaction_key, debug, test) self._recurring = RecurringAPI(login_id, transaction_key, debug, test) self._customer = CustomerAPI(login_id, transaction_key, debug, test)
def test_basic_api(self): api = TransactionAPI('123', '456') self.assertEqual(api.url, TEST_URL) api = TransactionAPI('123', '456', debug=False) self.assertEqual(api.url, PROD_URL)
class TransactionAPITests(TestCase): def setUp(self): self.api = TransactionAPI('123', '456') self.success = lambda *args, **kwargs: SUCCESS.reset() or SUCCESS self.error = lambda *args, **kwargs: ERROR.reset() or ERROR self.year = date.today().year + 10 self.credit_card = CreditCard('4111111111111111', self.year, 1, '911') self.address = Address('45 Rose Ave', 'Venice', 'CA', '90291') def test_basic_api(self): api = TransactionAPI('123', '456') self.assertEqual(api.url, TEST_URL) api = TransactionAPI('123', '456', debug=False) self.assertEqual(api.url, PROD_URL) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_make_call(self, urlopen): urlopen.side_effect = self.success result = self.api._make_call({'a': '1', 'b': '2'}) self.assertEqual(urlopen.call_args[0][0], '{0}?a=1&b=2'.format(TEST_URL)) self.assertEqual(result, PARSED_SUCCESS) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_make_call_connection_error(self, urlopen): urlopen.side_effect = IOError('Borked') self.assertRaises(AuthorizeConnectionError, self.api._make_call, {'a': '1', 'b': '2'}) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_make_call_response_error(self, urlopen): urlopen.side_effect = self.error try: self.api._make_call({'a': '1', 'b': '2'}) except AuthorizeResponseError as e: self.assertEqual(str(e), 'This transaction has been declined.') self.assertEqual(e.full_response, PARSED_ERROR) def test_add_params(self): self.assertEqual(self.api._add_params({}), {}) params = self.api._add_params({}, credit_card=self.credit_card) self.assertEqual(params, { 'x_card_num': '4111111111111111', 'x_exp_date': '01-{0}'.format(self.year), 'x_card_code': '911', }) params = self.api._add_params({}, address=self.address) self.assertEqual(params, { 'x_address': '45 Rose Ave', 'x_city': 'Venice', 'x_state': 'CA', 'x_zip': '90291', 'x_country': 'US', }) params = self.api._add_params({}, credit_card=self.credit_card, address=self.address) self.assertEqual(params, { 'x_card_num': '4111111111111111', 'x_exp_date': '01-{0}'.format(self.year), 'x_card_code': '911', 'x_address': '45 Rose Ave', 'x_city': 'Venice', 'x_state': 'CA', 'x_zip': '90291', 'x_country': 'US', }) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_auth(self, urlopen): urlopen.side_effect = self.success result = self.api.auth(20, self.credit_card, self.address) self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_zip=90291&x_card_num=4111111111111111&x_amount=20.00' '&x_tran_key=456&x_city=Venice&x_country=US&x_version=3.1' '&x_state=CA&x_delim_char=%3B&x_address=45+Rose+Ave' '&x_exp_date=01-2022&x_test_request=FALSE&x_card_code=911' '&x_type=AUTH_ONLY&x_delim_data=TRUE') self.assertEqual(result, PARSED_SUCCESS) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_capture(self, urlopen): urlopen.side_effect = self.success result = self.api.capture(20, self.credit_card, self.address) self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_zip=90291&x_card_num=4111111111111111&x_amount=20.00' '&x_tran_key=456&x_city=Venice&x_country=US&x_version=3.1' '&x_state=CA&x_delim_char=%3B&x_address=45+Rose+Ave' '&x_exp_date=01-2022&x_test_request=FALSE&x_card_code=911' '&x_type=AUTH_CAPTURE&x_delim_data=TRUE') self.assertEqual(result, PARSED_SUCCESS) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_settle(self, urlopen): urlopen.side_effect = self.success # Test without specified amount result = self.api.settle('123456') self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_trans_id=123456&x_version=3.1&x_delim_char=%3B' '&x_type=PRIOR_AUTH_CAPTURE&x_delim_data=TRUE&x_tran_key=456' '&x_test_request=FALSE') self.assertEqual(result, PARSED_SUCCESS) # Test with specified amount result = self.api.settle('123456', amount=10) self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_trans_id=123456&x_version=3.1&x_delim_char=%3B' '&x_type=PRIOR_AUTH_CAPTURE&x_amount=10.00&x_delim_data=TRUE' '&x_tran_key=456&x_test_request=FALSE') self.assertEqual(result, PARSED_SUCCESS) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_credit(self, urlopen): urlopen.side_effect = self.success # Test with transaction_id, no amount result = self.api.credit('1111', transaction_id='123456') self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_trans_id=123456&x_version=3.1&x_delim_char=%3B&x_type=CREDIT' '&x_card_num=1111&x_delim_data=TRUE&x_tran_key=456' '&x_test_request=FALSE') self.assertEqual(result, PARSED_SUCCESS) # Test with transaction_id, amount result = self.api.credit('1111', transaction_id='123456', amount=10) self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_trans_id=123456&x_version=3.1&x_amount=10.00&x_delim_char=%3B' '&x_type=CREDIT&x_card_num=1111&x_delim_data=TRUE&x_tran_key=456' '&x_test_request=FALSE') self.assertEqual(result, PARSED_SUCCESS) # Test with no transaction_id result = self.api.credit('4111111111111111', amount=10) self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_trans_id=None&x_version=3.1&x_amount=10.00&x_delim_char=%3B' '&x_type=CREDIT&x_card_num=4111111111111111&x_delim_data=TRUE' '&x_tran_key=456&x_test_request=FALSE') self.assertEqual(result, PARSED_SUCCESS) @mock.patch('authorize.apis.transaction.urllib.urlopen') def test_void(self, urlopen): urlopen.side_effect = self.success result = self.api.void('123456') self.assertEqual(urlopen.call_args[0][0], 'https://test.authorize.net/gateway/transact.dll?x_login=123' '&x_trans_id=123456&x_version=3.1&x_delim_char=%3B&x_type=VOID' '&x_delim_data=TRUE&x_tran_key=456&x_test_request=FALSE') self.assertEqual(result, PARSED_SUCCESS)