Skip to content

Commit 163b9c2

Browse files
Add session recordings follow-redirect boundary guard
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent aea7945 commit 163b9c2

3 files changed

Lines changed: 35 additions & 0 deletions

File tree

‎CONTRIBUTING.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ This runs lint, format checks, compile checks, tests, and package build.
161161
- `tests/test_session_operation_metadata_usage.py` (session manager operation-metadata usage enforcement),
162162
- `tests/test_session_parse_usage_boundary.py` (centralized session parse-helper usage boundary enforcement),
163163
- `tests/test_session_profile_update_helper_usage.py` (session profile-update parameter helper usage enforcement),
164+
- `tests/test_session_recordings_follow_redirects_boundary.py` (session recordings wrapper follow-redirect enforcement boundary),
164165
- `tests/test_session_request_helper_usage.py` (session manager request-helper usage enforcement),
165166
- `tests/test_session_request_internal_reuse.py` (session request-helper internal reuse of shared model raw request helpers),
166167
- `tests/test_session_request_wrapper_internal_reuse.py` (parsed session-request wrapper internal reuse of session resource helpers),

‎tests/test_architecture_marker_usage.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
"tests/test_session_operation_metadata_usage.py",
9494
"tests/test_session_parse_usage_boundary.py",
9595
"tests/test_session_profile_update_helper_usage.py",
96+
"tests/test_session_recordings_follow_redirects_boundary.py",
9697
"tests/test_session_request_helper_usage.py",
9798
"tests/test_session_request_internal_reuse.py",
9899
"tests/test_session_request_wrapper_internal_reuse.py",
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import ast
2+
from pathlib import Path
3+
4+
import pytest
5+
6+
pytestmark = pytest.mark.architecture
7+
8+
9+
MODULE_PATH = Path("hyperbrowser/client/managers/session_request_utils.py")
10+
11+
12+
def _collect_function_sources() -> dict[str, str]:
13+
module_text = MODULE_PATH.read_text(encoding="utf-8")
14+
module_ast = ast.parse(module_text)
15+
function_sources: dict[str, str] = {}
16+
for node in module_ast.body:
17+
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
18+
function_source = ast.get_source_segment(module_text, node)
19+
if function_source is not None:
20+
function_sources[node.name] = function_source
21+
return function_sources
22+
23+
24+
def test_sync_session_recordings_wrapper_enforces_follow_redirects():
25+
function_source = _collect_function_sources()["get_session_recordings"]
26+
assert "get_session_resource(" in function_source
27+
assert "follow_redirects=True" in function_source
28+
29+
30+
def test_async_session_recordings_wrapper_enforces_follow_redirects():
31+
function_source = _collect_function_sources()["get_session_recordings_async"]
32+
assert "get_session_resource_async(" in function_source
33+
assert "follow_redirects=True" in function_source

0 commit comments

Comments
 (0)