class TestGetCharge(ModelBaseTest): @pytest.fixture def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "get_charge" http_method_name = "get" args = () kwargs = { "credit_card_charge_id": "mock_charge_id-123", } params = (args, kwargs) url = f"/credit_card_charges/{kwargs['credit_card_charge_id']}" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result) @pytest.fixture def api_requestor_request_data(self, default_credit_card_data): tested_class, class_name, method_name, http_method_name, url, params, _ = default_credit_card_data headers = {} body = {} return (tested_class, class_name, method_name, http_method_name, url, params, headers, body) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_return_charge_on_correct_params(self, mocker, mock_correct_response, default_credit_card_data): self.run_success_return_test_on_xendit_instance( mocker, mock_correct_response, default_credit_card_data) def test_raise_xendit_error_on_response_error(self, mocker, mock_error_request_response, default_credit_card_data): self.run_raises_error_test_on_xendit_instance( mocker, mock_error_request_response, default_credit_card_data) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_return_charge_on_correct_params_and_global_xendit( self, mocker, mock_correct_response, default_credit_card_data): self.run_success_return_test_on_global_config( mocker, mock_correct_response, default_credit_card_data) def test_raise_xendit_error_on_response_error_and_global_xendit( self, mocker, mock_error_request_response, default_credit_card_data): self.run_raises_error_test_on_global_config( mocker, mock_error_request_response, default_credit_card_data) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_send_correct_request_to_api_requestor(self, mocker, mock_correct_response, api_requestor_request_data): self.run_send_correct_request_to_api_requestor( mocker, mock_correct_response, api_requestor_request_data)
class TestCreateAuthorization(ModelBaseTest): @pytest.fixture def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "create_authorization" http_method_name = "post" args = () kwargs = { "token_id": "mock-token123", "external_id": "mock_card_preAuth-123", "amount": 75000, "card_cvn": "123", "x_idempotency_key": "test-idemp_123", } params = (args, kwargs) url = "/credit_card_charges" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result) @pytest.fixture def api_requestor_request_data(self, default_credit_card_data): tested_class, class_name, method_name, http_method_name, url, params, _ = default_credit_card_data headers = {"X-IDEMPOTENCY-KEY": "test-idemp_123"} body = { "token_id": "mock-token123", "capture": False, "external_id": "mock_card_preAuth-123", "amount": 75000, "card_cvn": "123", } return (tested_class, class_name, method_name, http_method_name, url, params, headers, body) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_return_charge_on_correct_params( self, mocker, mock_correct_response, default_credit_card_data ): self.run_success_return_test_on_xendit_instance(mocker, mock_correct_response, default_credit_card_data) def test_raise_xendit_error_on_response_error( self, mocker, mock_error_request_response, default_credit_card_data ): self.run_raises_error_test_on_xendit_instance(mocker, mock_error_request_response, default_credit_card_data) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_return_charge_on_correct_params_and_global_xendit( self, mocker, mock_correct_response, default_credit_card_data ): self.run_success_return_test_on_global_config(mocker, mock_correct_response, default_credit_card_data) def test_raise_xendit_error_on_response_error_and_global_xendit( self, mocker, mock_error_request_response, default_credit_card_data ): self.run_raises_error_test_on_global_config(mocker, mock_error_request_response, default_credit_card_data) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_send_correct_request_to_api_requestor(self, mocker, mock_correct_response, api_requestor_request_data): self.run_send_correct_request_to_api_requestor(mocker, mock_correct_response, api_requestor_request_data)
def test_create_charge_return_correct_keys(self, CreditCard): charge = CreditCard.create_charge( token_id="5f0410898bcf7a001a00879d", external_id=f"card_preAuth-{int(time.time())}", amount=75000, card_cvn="123", ) self.assert_returned_object_has_same_key_as_sample_response( charge, charge_response())
def test_create_authorization_return_correct_keys(self, CreditCard): charge = CreditCard.create_authorization( token_id="602b9886396b5a001c99b798", external_id=f"card_preAuth-{int(time.time())}", amount=75000, card_cvn="123", ) self.assert_returned_object_has_same_key_as_sample_response( charge, charge_response() )
def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "get_charge" http_method_name = "get" args = () kwargs = { "credit_card_charge_id": "mock_charge_id-123", } params = (args, kwargs) url = f"/credit_card_charges/{kwargs['credit_card_charge_id']}" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result)
def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "create_refund" http_method_name = "post" args = () kwargs = { "credit_card_charge_id": "mock-charge-id-123", "amount": 10000, "external_id": "mock_card_refund-123", } params = (args, kwargs) url = f"/credit_card_charges/{kwargs['credit_card_charge_id']}/refunds" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result)
def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "capture_charge" http_method_name = "post" args = () kwargs = { "credit_card_charge_id": "mock_charge_id-123", "amount": 75000, "x_idempotency_key": "test-idemp_123", } params = (args, kwargs) url = f"/credit_card_charges/{kwargs['credit_card_charge_id']}/capture" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result)
def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "create_authorization" http_method_name = "post" args = () kwargs = { "token_id": "mock-token123", "external_id": "mock_card_preAuth-123", "amount": 75000, "card_cvn": "123", "x_idempotency_key": "test-idemp_123", } params = (args, kwargs) url = "/credit_card_charges" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result)
def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "create_charge" http_method_name = "post" billing_details, installment, promotion = self.helper() args = () kwargs = { "token_id": "mock_token-id-123", "external_id": "mock_card_charge-123", "amount": 75000, "card_cvn": "123", "x_idempotency_key": "test-idemp_123", "billing_details": billing_details, "installment": installment, "promotion": promotion, } params = (args, kwargs) url = "/credit_card_charges" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result)
class TestCreateCharge(ModelBaseTest): def helper(self): address = CreditCard.helper_create_address(country="Indonesia") billing_details = CreditCard.helper_create_billing_details( given_names="Adyaksa", address=address) installment = CreditCard.helper_create_installment(count=1, interval="month") promotion = CreditCard.helper_create_charge_promotion( reference_id="Xendit-123", original_amount=75000) return billing_details, installment, promotion @pytest.fixture def default_credit_card_data(self): tested_class = CreditCard class_name = "CreditCard" method_name = "create_charge" http_method_name = "post" billing_details, installment, promotion = self.helper() args = () kwargs = { "token_id": "mock_token-id-123", "external_id": "mock_card_charge-123", "amount": 75000, "card_cvn": "123", "x_idempotency_key": "test-idemp_123", "billing_details": billing_details, "installment": installment, "promotion": promotion, } params = (args, kwargs) url = "/credit_card_charges" expected_correct_result = charge_response() return (tested_class, class_name, method_name, http_method_name, url, params, expected_correct_result) @pytest.fixture def api_requestor_request_data(self, default_credit_card_data): tested_class, class_name, method_name, http_method_name, url, params, _ = default_credit_card_data headers = {"X-IDEMPOTENCY-KEY": "test-idemp_123"} body = { "token_id": "mock_token-id-123", "capture": True, "external_id": "mock_card_charge-123", "amount": 75000, "card_cvn": "123", "billing_details": { "given_names": "Adyaksa", "address": { "country": "Indonesia" } }, "installment": { "count": 1, "interval": "month", }, "promotion": { "reference_id": "Xendit-123", "original_amount": 75000 }, } return (tested_class, class_name, method_name, http_method_name, url, params, headers, body) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_return_charge_on_correct_params(self, mocker, mock_correct_response, default_credit_card_data): self.run_success_return_test_on_xendit_instance( mocker, mock_correct_response, default_credit_card_data) def test_raise_xendit_error_on_response_error(self, mocker, mock_error_request_response, default_credit_card_data): self.run_raises_error_test_on_xendit_instance( mocker, mock_error_request_response, default_credit_card_data) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_return_charge_on_correct_params_and_global_xendit( self, mocker, mock_correct_response, default_credit_card_data): self.run_success_return_test_on_global_config( mocker, mock_correct_response, default_credit_card_data) def test_raise_xendit_error_on_response_error_and_global_xendit( self, mocker, mock_error_request_response, default_credit_card_data): self.run_raises_error_test_on_global_config( mocker, mock_error_request_response, default_credit_card_data) @pytest.mark.parametrize("mock_correct_response", [charge_response()], indirect=True) def test_send_correct_request_to_api_requestor(self, mocker, mock_correct_response, api_requestor_request_data): self.run_send_correct_request_to_api_requestor( mocker, mock_correct_response, api_requestor_request_data)