Skip to content

Commit 4f6edf3

Browse files
T-256tomchristie
andauthored
test parse_header_links via public api (#3061)
* test `parse_header_links` via public api * add no-link test * Update tests/test_utils.py --------- Co-authored-by: Tom Christie <[email protected]>
1 parent c7cd6aa commit 4f6edf3

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

httpx/_models.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -774,13 +774,13 @@ def links(self) -> typing.Dict[typing.Optional[str], typing.Dict[str, str]]:
774774
Returns the parsed header links of the response, if any
775775
"""
776776
header = self.headers.get("link")
777-
ldict = {}
778-
if header:
779-
links = parse_header_links(header)
780-
for link in links:
781-
key = link.get("rel") or link.get("url")
782-
ldict[key] = link
783-
return ldict
777+
if header is None:
778+
return {}
779+
780+
return {
781+
(link.get("rel") or link.get("url")): link
782+
for link in parse_header_links(header)
783+
}
784784

785785
@property
786786
def num_bytes_downloaded(self) -> int:

tests/test_utils.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
get_ca_bundle_from_env,
1313
get_environment_proxies,
1414
is_https_redirect,
15-
parse_header_links,
1615
same_origin,
1716
)
1817

@@ -80,7 +79,13 @@ def test_guess_by_bom(encoding, expected):
8079
),
8180
)
8281
def test_parse_header_links(value, expected):
83-
assert parse_header_links(value) == expected
82+
all_links = httpx.Response(200, headers={"link": value}).links.values()
83+
assert all(link in all_links for link in expected)
84+
85+
86+
def test_parse_header_links_no_link():
87+
all_links = httpx.Response(200).links
88+
assert all_links == {}
8489

8590

8691
def test_logging_request(server, caplog):

0 commit comments

Comments
 (0)