Ejemplo n.º 1
0
 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')
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
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)