Skip to content

Commit e7508a4

Browse files
Airbyte CDK: Add delete method to HttpMocker (#38169)
1 parent fbb480f commit e7508a4

File tree

4 files changed

+36
-1
lines changed

4 files changed

+36
-1
lines changed

airbyte-cdk/python/CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog
22

3+
## 0.88.3
4+
Add Delete method to HttpMocker
5+
36
## 0.88.2
47
Fix dependency for pytz
58

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

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
class SupportedHttpMethods(str, Enum):
1414
GET = "get"
1515
POST = "post"
16+
DELETE = "delete"
1617

1718

1819
class HttpMocker(contextlib.ContextDecorator):
@@ -71,6 +72,9 @@ def get(self, request: HttpRequest, responses: Union[HttpResponse, List[HttpResp
7172
def post(self, request: HttpRequest, responses: Union[HttpResponse, List[HttpResponse]]) -> None:
7273
self._mock_request_method(SupportedHttpMethods.POST, request, responses)
7374

75+
def delete(self, request: HttpRequest, responses: Union[HttpResponse, List[HttpResponse]]) -> None:
76+
self._mock_request_method(SupportedHttpMethods.DELETE, request, responses)
77+
7478
@staticmethod
7579
def _matches_wrapper(matcher: HttpRequestMatcher) -> Callable[[requests_mock.request._RequestObjectProxy], bool]:
7680
def matches(requests_mock_request: requests_mock.request._RequestObjectProxy) -> bool:

airbyte-cdk/python/pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[tool.poetry]
66
name = "airbyte-cdk"
7-
version = "0.88.2"
7+
version = "0.88.3"
88
description = "A framework for writing Airbyte Connectors."
99
authors = ["Airbyte <[email protected]>"]
1010
license = "MIT"

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

+28
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,19 @@ def test_given_get_request_match_when_decorate_then_return_response(self, http_m
3434
assert response.status_code == 474
3535
assert response.headers == _OTHER_HEADERS
3636

37+
@HttpMocker()
38+
def test_given_delete_request_match_when_decorate_then_return_response(self, http_mocker):
39+
http_mocker.delete(
40+
HttpRequest(_A_URL, headers=_SOME_HEADERS),
41+
HttpResponse(_A_RESPONSE_BODY, 204, _OTHER_HEADERS),
42+
)
43+
44+
response = requests.delete(_A_URL, headers=_SOME_HEADERS)
45+
46+
assert response.text == _A_RESPONSE_BODY
47+
assert response.status_code == 204
48+
assert response.headers == _OTHER_HEADERS
49+
3750
@HttpMocker()
3851
def test_given_loose_headers_matching_when_decorate_then_match(self, http_mocker):
3952
http_mocker.get(
@@ -70,6 +83,21 @@ def test_given_multiple_responses_when_decorate_get_request_then_return_response
7083
assert second_response.text == _ANOTHER_RESPONSE_BODY
7184
assert second_response.status_code == 2
7285

86+
@HttpMocker()
87+
def test_given_multiple_responses_when_decorate_delete_request_then_return_response(self, http_mocker):
88+
http_mocker.delete(
89+
HttpRequest(_A_URL, headers=_SOME_HEADERS),
90+
[HttpResponse(_A_RESPONSE_BODY, 1), HttpResponse(_ANOTHER_RESPONSE_BODY, 2)],
91+
)
92+
93+
first_response = requests.delete(_A_URL, headers=_SOME_HEADERS)
94+
second_response = requests.delete(_A_URL, headers=_SOME_HEADERS)
95+
96+
assert first_response.text == _A_RESPONSE_BODY
97+
assert first_response.status_code == 1
98+
assert second_response.text == _ANOTHER_RESPONSE_BODY
99+
assert second_response.status_code == 2
100+
73101
@HttpMocker()
74102
def test_given_multiple_responses_when_decorate_post_request_then_return_response(self, http_mocker):
75103
http_mocker.post(

0 commit comments

Comments
 (0)