From f171e90e7fdf6c240d89cf6123044bef3c0f4f98 Mon Sep 17 00:00:00 2001 From: T-256 <132141463+T-256@users.noreply.github.com> Date: Tue, 16 Jan 2024 11:10:08 +0330 Subject: [PATCH 1/3] test `parse_header_links` via public api --- httpx/_models.py | 14 +++++++------- tests/test_utils.py | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/httpx/_models.py b/httpx/_models.py index b8617cdab5..e08248a8d4 100644 --- a/httpx/_models.py +++ b/httpx/_models.py @@ -774,13 +774,13 @@ def links(self) -> typing.Dict[typing.Optional[str], typing.Dict[str, str]]: Returns the parsed header links of the response, if any """ header = self.headers.get("link") - ldict = {} - if header: - links = parse_header_links(header) - for link in links: - key = link.get("rel") or link.get("url") - ldict[key] = link - return ldict + if header is None: + return {} + + return { + (link.get("rel") or link.get("url")): link + for link in parse_header_links(header) + } @property def num_bytes_downloaded(self) -> int: diff --git a/tests/test_utils.py b/tests/test_utils.py index 5391f9c22d..2317f5e3c4 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -13,7 +13,6 @@ get_environment_proxies, is_https_redirect, obfuscate_sensitive_headers, - parse_header_links, same_origin, ) @@ -81,7 +80,8 @@ def test_guess_by_bom(encoding, expected): ), ) def test_parse_header_links(value, expected): - assert parse_header_links(value) == expected + all_links = httpx.Response(200, headers={"link": value}).links.values() + assert all(link in all_links for link in expected) def test_logging_request(server, caplog): From 4452e78e37dce28730bac7dda846a2628990d5c4 Mon Sep 17 00:00:00 2001 From: T-256 <132141463+T-256@users.noreply.github.com> Date: Tue, 16 Jan 2024 11:35:35 +0330 Subject: [PATCH 2/3] add no-link test --- tests/test_utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_utils.py b/tests/test_utils.py index 2317f5e3c4..a4bec1f118 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -84,6 +84,11 @@ def test_parse_header_links(value, expected): assert all(link in all_links for link in expected) +def test_parse_header_links_no_link(value, expected): + all_links = httpx.Response(200).links + assert all_links == {} + + def test_logging_request(server, caplog): caplog.set_level(logging.INFO) with httpx.Client() as client: From 26d3fa2113a3b130c04a7047765051e4745aca64 Mon Sep 17 00:00:00 2001 From: T-256 <132141463+T-256@users.noreply.github.com> Date: Tue, 16 Jan 2024 11:37:23 +0330 Subject: [PATCH 3/3] Update tests/test_utils.py --- tests/test_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index a4bec1f118..2c6380c9e0 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -84,7 +84,7 @@ def test_parse_header_links(value, expected): assert all(link in all_links for link in expected) -def test_parse_header_links_no_link(value, expected): +def test_parse_header_links_no_link(): all_links = httpx.Response(200).links assert all_links == {}