Skip to content

Commit a884b62

Browse files
author
Thiago Perrotta
committed
test: add network interception continue response invalidation tests
1 parent 50bfdb9 commit a884b62

File tree

3 files changed

+119
-0
lines changed

3 files changed

+119
-0
lines changed

tools/webdriver/webdriver/bidi/modules/network.py

+21
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,27 @@ def continue_request(self,
8080

8181
return params
8282

83+
@command
84+
def continue_response(self,
85+
request: str,
86+
reason_phrase: Optional[str] = None,
87+
status_code: Optional[int] = None) -> Mapping[str, Any]:
88+
params: MutableMapping[str, Any] = {
89+
"request": request,
90+
}
91+
92+
if reason_phrase is not None:
93+
params["reasonPhrase"] = reason_phrase
94+
95+
if status_code is not None:
96+
params["statusCode"] = status_code
97+
98+
# TODO: Add cookies.
99+
# TODO: Add credentials.
100+
# TODO: Add headers.
101+
102+
return params
103+
83104
@command
84105
def fail_request(self, request: str) -> Mapping[str, Any]:
85106
params: MutableMapping[str, Any] = {"request": request}

webdriver/tests/bidi/network/continue_response/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import asyncio
2+
import pytest
3+
import webdriver.bidi.error as error
4+
from webdriver.bidi.modules.script import ScriptEvaluateResultException
5+
6+
pytestmark = pytest.mark.asyncio
7+
8+
PAGE_EMPTY_TEXT = "/webdriver/tests/bidi/network/support/empty.txt"
9+
10+
11+
@pytest.mark.parametrize("value", [None, False, 42, {}, []])
12+
async def test_params_request_invalid_type(bidi_session, value):
13+
with pytest.raises(error.InvalidArgumentException):
14+
await bidi_session.network.continue_response(request=value)
15+
16+
17+
@pytest.mark.parametrize("value", ["", "foo"])
18+
async def test_params_request_invalid_value(bidi_session, value):
19+
with pytest.raises(error.NoSuchRequestException):
20+
await bidi_session.network.continue_response(request=value)
21+
22+
23+
async def test_params_request_no_such_request(bidi_session, setup_network_test,
24+
wait_for_event, fetch, url):
25+
await setup_network_test(events=[
26+
"network.responseCompleted",
27+
])
28+
on_response_completed = wait_for_event("network.responseCompleted")
29+
30+
text_url = url(PAGE_EMPTY_TEXT)
31+
await fetch(text_url)
32+
33+
response_completed_event = await on_response_completed
34+
request = response_completed_event["request"]["request"]
35+
36+
with pytest.raises(error.NoSuchRequestException):
37+
await bidi_session.network.continue_response(request=request)
38+
39+
40+
@pytest.mark.parametrize("value", [False, 42, {}, []])
41+
async def test_params_reason_phrase_invalid_type(bidi_session, value,
42+
setup_network_test, url, fetch,
43+
wait_for_event, add_intercept):
44+
request = await create_blocked_request(setup_network_test, url,
45+
add_intercept, fetch,
46+
wait_for_event)
47+
48+
with pytest.raises(error.InvalidArgumentException):
49+
await bidi_session.network.continue_response(request=request,
50+
reason_phrase=value)
51+
52+
53+
@pytest.mark.parametrize("value", [False, "s", {}, []])
54+
async def test_params_status_code_invalid_type(bidi_session, value, setup_network_test,
55+
url, fetch, wait_for_event,
56+
add_intercept):
57+
request = await create_blocked_request(setup_network_test, url,
58+
add_intercept, fetch,
59+
wait_for_event)
60+
61+
with pytest.raises(error.InvalidArgumentException):
62+
await bidi_session.network.continue_response(request=request, status_code=value)
63+
64+
65+
@pytest.mark.parametrize("value", [-1, 4.3])
66+
async def test_params_status_code_invalid_value(bidi_session, value, setup_network_test,
67+
url, fetch, wait_for_event,
68+
add_intercept):
69+
request = await create_blocked_request(setup_network_test, url,
70+
add_intercept, fetch,
71+
wait_for_event)
72+
73+
with pytest.raises(error.InvalidArgumentException):
74+
await bidi_session.network.continue_response(request=request, status_code=value)
75+
76+
# TODO: Add cookies.
77+
# TODO: Add credentials.
78+
# TODO: Add headers.
79+
80+
81+
async def create_blocked_request(setup_network_test, url, add_intercept, fetch,
82+
wait_for_event):
83+
await setup_network_test(events=["network.beforeRequestSent"])
84+
85+
text_url = url(PAGE_EMPTY_TEXT)
86+
await add_intercept(
87+
phases=["responseStarted"],
88+
url_patterns=[{
89+
"type": "string",
90+
"pattern": text_url,
91+
}],
92+
)
93+
94+
asyncio.ensure_future(fetch(text_url))
95+
event = await wait_for_event("network.beforeRequestSent")
96+
request = event["request"]["request"]
97+
98+
return request

0 commit comments

Comments
 (0)