Skip to content

Commit 19e6af4

Browse files
Add session request function parse boundary architecture guard
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent b95fb0e commit 19e6af4

File tree

4 files changed

+56
-0
lines changed

4 files changed

+56
-0
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ This runs lint, format checks, compile checks, tests, and package build.
167167
- `tests/test_session_parse_usage_boundary.py` (centralized session parse-helper usage boundary enforcement),
168168
- `tests/test_session_profile_update_helper_usage.py` (session profile-update parameter helper usage enforcement),
169169
- `tests/test_session_recordings_follow_redirects_boundary.py` (session recordings wrapper follow-redirect enforcement boundary),
170+
- `tests/test_session_request_function_parse_boundary.py` (session-request function-level parse boundary enforcement between parsed wrappers and resource helpers),
170171
- `tests/test_session_request_helper_usage.py` (session manager request-helper usage enforcement),
171172
- `tests/test_session_request_internal_reuse.py` (session request-helper internal reuse of shared model raw request helpers),
172173
- `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
@@ -99,6 +99,7 @@
9999
"tests/test_session_parse_usage_boundary.py",
100100
"tests/test_session_profile_update_helper_usage.py",
101101
"tests/test_session_recordings_follow_redirects_boundary.py",
102+
"tests/test_session_request_function_parse_boundary.py",
102103
"tests/test_session_request_helper_usage.py",
103104
"tests/test_session_request_internal_reuse.py",
104105
"tests/test_session_request_wrapper_internal_reuse.py",

tests/test_ast_function_source_helper_usage.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"tests/test_model_request_wrapper_internal_reuse.py",
1515
"tests/test_request_wrapper_internal_reuse.py",
1616
"tests/test_session_recordings_follow_redirects_boundary.py",
17+
"tests/test_session_request_function_parse_boundary.py",
1718
"tests/test_session_request_wrapper_internal_reuse.py",
1819
"tests/test_session_resource_wrapper_internal_reuse.py",
1920
"tests/test_web_request_wrapper_internal_reuse.py",
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import pytest
2+
3+
from tests.ast_function_source_utils import collect_function_sources
4+
5+
pytestmark = pytest.mark.architecture
6+
7+
8+
MODULE_PATH = "hyperbrowser/client/managers/session_request_utils.py"
9+
10+
PARSED_SESSION_MODEL_WRAPPERS = (
11+
"post_session_model",
12+
"get_session_model",
13+
"put_session_model",
14+
"post_session_model_async",
15+
"get_session_model_async",
16+
"put_session_model_async",
17+
)
18+
19+
SESSION_RECORDINGS_WRAPPERS = (
20+
"get_session_recordings",
21+
"get_session_recordings_async",
22+
)
23+
24+
RESOURCE_HELPERS = (
25+
"post_session_resource",
26+
"get_session_resource",
27+
"put_session_resource",
28+
"post_session_resource_async",
29+
"get_session_resource_async",
30+
"put_session_resource_async",
31+
)
32+
33+
34+
def test_parsed_session_model_wrappers_call_session_model_parser():
35+
function_sources = collect_function_sources(MODULE_PATH)
36+
for function_name in PARSED_SESSION_MODEL_WRAPPERS:
37+
function_source = function_sources[function_name]
38+
assert "parse_session_response_model(" in function_source
39+
40+
41+
def test_session_recordings_wrappers_call_recordings_parser():
42+
function_sources = collect_function_sources(MODULE_PATH)
43+
for function_name in SESSION_RECORDINGS_WRAPPERS:
44+
function_source = function_sources[function_name]
45+
assert "parse_session_recordings_response_data(" in function_source
46+
47+
48+
def test_resource_helpers_do_not_call_session_parsers():
49+
function_sources = collect_function_sources(MODULE_PATH)
50+
for function_name in RESOURCE_HELPERS:
51+
function_source = function_sources[function_name]
52+
assert "parse_session_response_model(" not in function_source
53+
assert "parse_session_recordings_response_data(" not in function_source

0 commit comments

Comments
 (0)