Skip to content

Commit 78f1cbb

Browse files
juliandescottesfoolip
authored andcommitted
[wdspec] Add invalid wdspec test for network.addDataCollector
Differential Revision: https://phabricator.services.mozilla.com/D257675 bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1971778 gecko-commit: f29499c81708870e1d378b2796c55a5aeda6fe00 gecko-reviewers: webdriver-reviewers, jgraham
1 parent b8861ab commit 78f1cbb

File tree

3 files changed

+181
-0
lines changed

3 files changed

+181
-0
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,35 @@ def remove_intercept(self, intercept: str) -> Mapping[str, Any]:
248248
params: MutableMapping[str, Any] = {"intercept": intercept}
249249
return params
250250

251+
@command
252+
def add_data_collector(
253+
self,
254+
data_types: List[str],
255+
max_encoded_data_size: int,
256+
collector_type: Optional[str] = None,
257+
contexts: Optional[List[str]] = None,
258+
user_contexts: Optional[List[str]] = None) -> Mapping[str, Any]:
259+
params: MutableMapping[str, Any] = {
260+
"dataTypes": data_types,
261+
"maxEncodedDataSize": max_encoded_data_size,
262+
}
263+
264+
if collector_type is not None:
265+
params["collectorType"] = collector_type
266+
267+
if contexts is not None:
268+
params["contexts"] = contexts
269+
270+
if user_contexts is not None:
271+
params["userContexts"] = user_contexts
272+
273+
return params
274+
275+
@add_data_collector.result
276+
def _add_data_collector(self, result: Mapping[str, Any]) -> Any:
277+
assert result["collector"] is not None
278+
return result["collector"]
279+
251280
@command
252281
def set_cache_behavior(
253282
self,

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

Whitespace-only changes.
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
import pytest
2+
import webdriver.bidi.error as error
3+
4+
pytestmark = pytest.mark.asyncio
5+
6+
7+
@pytest.mark.parametrize("value", [None, "foo", False, 42, {}])
8+
async def test_params_data_types_invalid_type(bidi_session, value):
9+
with pytest.raises(error.InvalidArgumentException):
10+
await bidi_session.network.add_data_collector(
11+
data_types=value, max_encoded_data_size=1000
12+
)
13+
14+
15+
async def test_params_data_types_empty_array(bidi_session):
16+
with pytest.raises(error.InvalidArgumentException):
17+
await bidi_session.network.add_data_collector(
18+
data_types=[], max_encoded_data_size=1000
19+
)
20+
21+
22+
@pytest.mark.parametrize("value", [None, False, 42, {}, []])
23+
async def test_params_data_types_entry_invalid_type(bidi_session, value):
24+
with pytest.raises(error.InvalidArgumentException):
25+
await bidi_session.network.add_data_collector(
26+
data_types=[value], max_encoded_data_size=1000
27+
)
28+
29+
30+
@pytest.mark.parametrize("value", ["foo", "request", "invalid"])
31+
async def test_params_data_types_entry_invalid_value(bidi_session, value):
32+
with pytest.raises(error.InvalidArgumentException):
33+
await bidi_session.network.add_data_collector(
34+
data_types=[value], max_encoded_data_size=1000
35+
)
36+
37+
38+
@pytest.mark.parametrize("value", [None, "foo", False, {}, []])
39+
async def test_params_max_encoded_data_size_invalid_type(bidi_session, value):
40+
with pytest.raises(error.InvalidArgumentException):
41+
await bidi_session.network.add_data_collector(
42+
data_types=["response"], max_encoded_data_size=value
43+
)
44+
45+
46+
@pytest.mark.parametrize("value", [0, -1, -100])
47+
async def test_params_max_encoded_data_size_invalid_value(bidi_session, value):
48+
with pytest.raises(error.InvalidArgumentException):
49+
await bidi_session.network.add_data_collector(
50+
data_types=["response"], max_encoded_data_size=value
51+
)
52+
53+
54+
async def test_params_max_encoded_data_size_exceeds_max_total_size(bidi_session):
55+
# Use a very large value that should exceed the maximum total size
56+
with pytest.raises(error.InvalidArgumentException):
57+
await bidi_session.network.add_data_collector(
58+
data_types=["response"], max_encoded_data_size=999999999999
59+
)
60+
61+
62+
# collectorType parameter tests
63+
@pytest.mark.parametrize("value", [False, 42, {}, []])
64+
async def test_params_collector_type_invalid_type(bidi_session, value):
65+
with pytest.raises(error.InvalidArgumentException):
66+
await bidi_session.network.add_data_collector(
67+
data_types=["response"], max_encoded_data_size=1000, collector_type=value
68+
)
69+
70+
71+
@pytest.mark.parametrize("value", ["foo", "invalid", "stream"])
72+
async def test_params_collector_type_invalid_value(bidi_session, value):
73+
with pytest.raises(error.InvalidArgumentException):
74+
await bidi_session.network.add_data_collector(
75+
data_types=["response"], max_encoded_data_size=1000, collector_type=value
76+
)
77+
78+
79+
@pytest.mark.parametrize("value", [False, 42, {}, ""])
80+
async def test_params_contexts_invalid_type(bidi_session, value):
81+
with pytest.raises(error.InvalidArgumentException):
82+
await bidi_session.network.add_data_collector(
83+
data_types=["response"], max_encoded_data_size=1000, contexts=value
84+
)
85+
86+
87+
async def test_params_contexts_empty_list(bidi_session):
88+
with pytest.raises(error.InvalidArgumentException):
89+
await bidi_session.network.add_data_collector(
90+
data_types=["response"], max_encoded_data_size=1000, contexts=[]
91+
)
92+
93+
94+
@pytest.mark.parametrize("value", [None, False, 42, {}, []])
95+
async def test_params_contexts_entry_invalid_type(bidi_session, value):
96+
with pytest.raises(error.InvalidArgumentException):
97+
await bidi_session.network.add_data_collector(
98+
data_types=["response"], max_encoded_data_size=1000, contexts=[value]
99+
)
100+
101+
102+
async def test_params_contexts_invalid_value(bidi_session):
103+
with pytest.raises(error.NoSuchFrameException):
104+
await bidi_session.network.add_data_collector(
105+
data_types=["response"],
106+
max_encoded_data_size=1000,
107+
contexts=["does not exist"],
108+
)
109+
110+
111+
@pytest.mark.parametrize("value", [False, 42, {}, ""])
112+
async def test_params_user_contexts_invalid_type(bidi_session, value):
113+
with pytest.raises(error.InvalidArgumentException):
114+
await bidi_session.network.add_data_collector(
115+
data_types=["response"], max_encoded_data_size=1000, user_contexts=value
116+
)
117+
118+
119+
async def test_params_user_contexts_empty_list(bidi_session):
120+
with pytest.raises(error.InvalidArgumentException):
121+
await bidi_session.network.add_data_collector(
122+
data_types=["response"], max_encoded_data_size=1000, user_contexts=[]
123+
)
124+
125+
126+
@pytest.mark.parametrize("value", [None, False, 42, {}, []])
127+
async def test_params_user_contexts_entry_invalid_type(bidi_session, value):
128+
with pytest.raises(error.InvalidArgumentException):
129+
await bidi_session.network.add_data_collector(
130+
data_types=["response"], max_encoded_data_size=1000, user_contexts=[value]
131+
)
132+
133+
134+
async def test_params_user_contexts_invalid_value(bidi_session):
135+
with pytest.raises(error.NoSuchUserContextException):
136+
await bidi_session.network.add_data_collector(
137+
data_types=["response"],
138+
max_encoded_data_size=1000,
139+
user_contexts=["does not exist"],
140+
)
141+
142+
143+
async def test_params_contexts_and_user_contexts_mutually_exclusive(
144+
bidi_session, new_tab
145+
):
146+
with pytest.raises(error.InvalidArgumentException):
147+
await bidi_session.network.add_data_collector(
148+
data_types=["response"],
149+
max_encoded_data_size=1000,
150+
contexts=[new_tab["context"]],
151+
user_contexts=["default"],
152+
)

0 commit comments

Comments
 (0)