From d847a997daa6c39692745e61dccd06820bd14af9 Mon Sep 17 00:00:00 2001 From: Farly FD Date: Wed, 16 Mar 2022 04:38:06 +0700 Subject: [PATCH 1/2] fix: custom_headers not applied --- midtransclient/http_client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/midtransclient/http_client.py b/midtransclient/http_client.py index 632dc3b..a72bd08 100644 --- a/midtransclient/http_client.py +++ b/midtransclient/http_client.py @@ -45,7 +45,7 @@ def request(self, method, server_key, request_url, parameters=dict(), # only merge if custom headers exist if custom_headers: - headers = {**default_headers, **headers} + headers = {**default_headers, **custom_headers} response_object = self.http_client.request( method, From 649aab4e66dc7d8d8cf2b5be76b2fde46b9ccc3a Mon Sep 17 00:00:00 2001 From: Farly FD Date: Wed, 16 Mar 2022 06:22:24 +0700 Subject: [PATCH 2/2] tests: add test --- tests/test_http_client.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/test_http_client.py b/tests/test_http_client.py index 1f6e401..8d3e7b9 100644 --- a/tests/test_http_client.py +++ b/tests/test_http_client.py @@ -1,4 +1,5 @@ import pytest +from unittest.mock import patch from .helpers import is_str from .context import HttpClient import datetime @@ -47,6 +48,35 @@ def test_response_not_json_exception(): except Exception as e: assert 'JSONDecodeError' in repr(e) +def test_is_custom_headers_applied(): + http_client = HttpClient() + + custom_headers = { + 'X-Override-Notification':'https://example.org' + } + + # Mock requests + with patch('requests.request') as mock_request: + # Set status code to 200 to prevent MidtransAPIError + mock_request.return_value.status_code = 200 + + # Trigger request + http_client.request(method='post', + server_key='SB-Mid-server-GwUP_WGbJPXsDzsNEBRs8IYA', + request_url='https://app.sandbox.midtrans.com/snap/v1/transactions', + parameters=generate_param_min(), + custom_headers=custom_headers) + + # Fetch the headers from requests.request arguments + headers = mock_request.call_args.kwargs['headers'] + + # Make sure default header still exist + assert headers.get('content-type') == 'application/json' + + # Assert custom headers + assert 'X-Override-Notification' in headers + assert headers.get('X-Override-Notification') == 'https://example.org' + # TODO test GET request # ======== HELPER FUNCTIONS BELOW ======== #