Skip to content

Commit fd2124c

Browse files
committed
Work around the fact that dict does not truly implement Mapping (get needs positional args in dict)
1 parent 61dcec2 commit fd2124c

File tree

5 files changed

+27
-17
lines changed

5 files changed

+27
-17
lines changed

src/mock_vws/_database_matchers.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,12 @@ def get_database_matching_client_keys(
3535
Raises:
3636
ValueError: No database matches the given request.
3737
"""
38-
content_type = request_headers.get("Content-Type", default="").split(
39-
sep=";"
40-
)[0]
41-
auth_header = request_headers.get("Authorization")
42-
date = request_headers.get("Date", default="")
38+
request_headers_dict = dict(request_headers)
39+
content_type = request_headers_dict.get("Content-Type", "").split(sep=";")[
40+
0
41+
]
42+
auth_header = request_headers_dict.get("Authorization")
43+
date = request_headers_dict.get("Date", "")
4344

4445
for database in databases:
4546
expected_authorization_header = authorization_header(
@@ -82,10 +83,11 @@ def get_database_matching_server_keys(
8283
Raises:
8384
ValueError: No database matches the given request.
8485
"""
85-
content_type_header = request_headers.get("Content-Type", default="")
86+
request_headers_dict = dict(request_headers)
87+
content_type_header = request_headers_dict.get("Content-Type", "")
8688
content_type = content_type_header.split(sep=";")[0]
87-
auth_header = request_headers.get("Authorization")
88-
date = request_headers.get("Date", default="")
89+
auth_header = request_headers_dict.get("Authorization")
90+
date = request_headers_dict.get("Date", "")
8991

9092
for database in databases:
9193
expected_authorization_header = authorization_header(

src/mock_vws/_query_validators/content_type_validators.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ def validate_content_type_header(
3838
NoContentTypeError: The content type header is either empty or not
3939
given.
4040
"""
41-
content_type_header = request_headers.get("Content-Type", default="")
41+
request_headers_dict = dict(request_headers)
42+
content_type_header = request_headers_dict.get("Content-Type", "")
4243
if not content_type_header:
4344
_LOGGER.warning(msg="The content type header is empty.")
4445
raise NoContentTypeError

src/mock_vws/_services_validators/content_length_validators.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ def validate_content_length_header_is_int(
3333
integer
3434
"""
3535
body_length = len(request_body)
36-
given_content_length = request_headers.get(
36+
request_headers_dict = dict(request_headers)
37+
given_content_length = request_headers_dict.get(
3738
"Content-Length",
38-
default=body_length,
39+
body_length,
3940
)
4041

4142
try:
@@ -62,9 +63,10 @@ def validate_content_length_header_not_too_large(
6263
that the content length is greater than the body length.
6364
"""
6465
body_length = len(request_body)
65-
given_content_length = request_headers.get(
66+
request_headers_dict = dict(request_headers)
67+
given_content_length = request_headers_dict.get(
6668
"Content-Length",
67-
default=body_length,
69+
body_length,
6870
)
6971
given_content_length_value = int(given_content_length)
7072
# We skip coverage here as running a test to cover this is very slow.
@@ -90,9 +92,10 @@ def validate_content_length_header_not_too_small(
9092
the content length is smaller than the body length.
9193
"""
9294
body_length = len(request_body)
93-
given_content_length = request_headers.get(
95+
request_headers_dict = dict(request_headers)
96+
given_content_length = request_headers_dict.get(
9497
"Content-Length",
95-
default=body_length,
98+
body_length,
9699
)
97100
given_content_length_value = int(given_content_length)
98101

src/mock_vws/_services_validators/content_type_validators.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,14 @@ def validate_content_type_header_given(
3030
AuthenticationFailureError: No ``Content-Type`` header is given and the
3131
request requires one.
3232
"""
33+
request_headers_dict = dict(request_headers)
3334
request_needs_content_type = bool(
3435
request_method in {HTTPMethod.POST, HTTPMethod.PUT},
3536
)
36-
if request_headers.get("Content-Type") or not request_needs_content_type:
37+
if (
38+
request_headers_dict.get("Content-Type")
39+
or not request_needs_content_type
40+
):
3741
return
3842

3943
_LOGGER.warning(msg="No Content-Type header is given.")

tests/mock_vws/utils/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def auth_header_content_type(self) -> str:
8282
"""
8383
The content type to use for the `Authorization` header.
8484
"""
85-
full_content_type = self.headers.get("Content-Type", default="")
85+
full_content_type = self.headers.get("Content-Type", "")
8686
return full_content_type.split(sep=";")[0]
8787

8888

0 commit comments

Comments
 (0)