Skip to content

Commit 60a2618

Browse files
authored
[ISSUE #34910] add headers to HttpResponse for test framework (#35105)
1 parent ff4ed24 commit 60a2618

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

airbyte-cdk/python/airbyte_cdk/test/mock_http/mocker.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ def _mock_request_method(
6060
getattr(self._mocker, method)(
6161
requests_mock.ANY,
6262
additional_matcher=self._matches_wrapper(matcher),
63-
response_list=[{"text": response.body, "status_code": response.status_code} for response in responses],
63+
response_list=[
64+
{"text": response.body, "status_code": response.status_code, "headers": response.headers} for response in responses
65+
],
6466
)
6567

6668
def get(self, request: HttpRequest, responses: Union[HttpResponse, List[HttpResponse]]) -> None:
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
22

3+
from types import MappingProxyType
4+
from typing import Mapping
5+
36

47
class HttpResponse:
5-
def __init__(self, body: str, status_code: int = 200):
8+
def __init__(self, body: str, status_code: int = 200, headers: Mapping[str, str] = MappingProxyType({})):
69
self._body = body
710
self._status_code = status_code
11+
self._headers = headers
812

913
@property
1014
def body(self) -> str:
@@ -13,3 +17,7 @@ def body(self) -> str:
1317
@property
1418
def status_code(self) -> int:
1519
return self._status_code
20+
21+
@property
22+
def headers(self) -> Mapping[str, str]:
23+
return self._headers

airbyte-cdk/python/unit_tests/test/mock_http/test_mocker.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
_A_RESPONSE = HttpResponse("any response")
1616
_SOME_QUERY_PARAMS = {"q1": "query value"}
1717
_SOME_HEADERS = {"h1": "header value"}
18+
_OTHER_HEADERS = {"h2": "another header value"}
1819
_SOME_REQUEST_BODY_MAPPING = {"first_field": "first_value", "second_field": 2}
1920
_SOME_REQUEST_BODY_STR = "some_request_body"
2021

@@ -24,13 +25,14 @@ class HttpMockerTest(TestCase):
2425
def test_given_get_request_match_when_decorate_then_return_response(self, http_mocker):
2526
http_mocker.get(
2627
HttpRequest(_A_URL, _SOME_QUERY_PARAMS, _SOME_HEADERS),
27-
HttpResponse(_A_RESPONSE_BODY, 474),
28+
HttpResponse(_A_RESPONSE_BODY, 474, _OTHER_HEADERS),
2829
)
2930

3031
response = requests.get(_A_URL, params=_SOME_QUERY_PARAMS, headers=_SOME_HEADERS)
3132

3233
assert response.text == _A_RESPONSE_BODY
3334
assert response.status_code == 474
35+
assert response.headers == _OTHER_HEADERS
3436

3537
@HttpMocker()
3638
def test_given_loose_headers_matching_when_decorate_then_match(self, http_mocker):

0 commit comments

Comments
 (0)