Skip to content

Commit 92f6a2c

Browse files
Preserve idempotence for sanitized fetch-prefix separators
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 1dae14d commit 92f6a2c

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

hyperbrowser/client/polling.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,10 @@ def build_operation_name(prefix: object, identifier: object) -> str:
129129

130130
def build_fetch_operation_name(operation_name: object) -> str:
131131
normalized_operation_name = build_operation_name("", operation_name)
132-
if normalized_operation_name.lower().startswith(
132+
normalized_lower_operation_name = normalized_operation_name.lower()
133+
if normalized_lower_operation_name.startswith(
133134
_FETCH_OPERATION_NAME_PREFIX.lower()
134-
):
135+
) or normalized_lower_operation_name.startswith("fetching?"):
135136
return normalized_operation_name
136137
return build_operation_name(
137138
_FETCH_OPERATION_NAME_PREFIX,

tests/test_polling.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ def test_build_fetch_operation_name_is_idempotent_case_insensitive():
5757
assert build_fetch_operation_name(operation_name) == operation_name
5858

5959

60+
def test_build_fetch_operation_name_is_idempotent_for_sanitized_fetch_separator():
61+
operation_name = "Fetching\tcrawl job 123"
62+
normalized_operation_name = build_fetch_operation_name(operation_name)
63+
64+
assert normalized_operation_name == "Fetching?crawl job 123"
65+
assert normalized_operation_name.count("Fetching") == 1
66+
67+
6068
def test_build_fetch_operation_name_truncates_to_preserve_fetch_prefix():
6169
operation_name = "x" * 200
6270
fetch_operation_name = build_fetch_operation_name(operation_name)

0 commit comments

Comments
 (0)