Skip to content

Commit 0c7f131

Browse files
juliandescottesmoz-wptsync-bot
authored andcommitted
[wdspec] Add wdspec tests for getData
Differential Revision: https://phabricator.services.mozilla.com/D259540 bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1971780 gecko-commit: b9d86d414f984e4ad602f7c5b30dcb078d2097b2 gecko-reviewers: webdriver-reviewers, Sasha
1 parent 1beaa1f commit 0c7f131

File tree

6 files changed

+235
-0
lines changed

6 files changed

+235
-0
lines changed

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,3 +293,28 @@ def set_cache_behavior(
293293
params["contexts"] = contexts
294294

295295
return params
296+
297+
@command
298+
def get_data(
299+
self,
300+
request: str,
301+
data_type: str,
302+
collector: Optional[str] = None,
303+
disown: Optional[bool] = None) -> Mapping[str, Any]:
304+
params: MutableMapping[str, Any] = {
305+
"request": request,
306+
"dataType": data_type,
307+
}
308+
309+
if collector is not None:
310+
params["collector"] = collector
311+
312+
if disown is not None:
313+
params["disown"] = disown
314+
315+
return params
316+
317+
@get_data.result
318+
def _get_data(self, result: Mapping[str, Any]) -> Any:
319+
assert result["bytes"] is not None
320+
return result["bytes"]

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

Whitespace-only changes.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import pytest
2+
import webdriver.bidi.error as error
3+
4+
from .. import PAGE_EMPTY_TEXT
5+
6+
pytestmark = pytest.mark.asyncio
7+
8+
9+
async def test_single_collector(bidi_session, url, setup_collected_response):
10+
[request, collector] = await setup_collected_response(
11+
fetch_url=url(PAGE_EMPTY_TEXT)
12+
)
13+
data = await bidi_session.network.get_data(
14+
request=request, data_type="response", collector=collector
15+
)
16+
17+
assert data["type"] == "string"
18+
assert data["value"] == "empty\n"
19+
20+
21+
async def test_several_collectors(
22+
bidi_session, url, add_data_collector, setup_collected_response
23+
):
24+
collector = await add_data_collector(
25+
collector_type="blob", data_types=["response"], max_encoded_data_size=1000
26+
)
27+
[request, other_collector] = await setup_collected_response(
28+
fetch_url=url(PAGE_EMPTY_TEXT)
29+
)
30+
31+
data = await bidi_session.network.get_data(
32+
request=request, data_type="response", collector=collector
33+
)
34+
assert data["type"] == "string"
35+
assert data["value"] == "empty\n"
36+
37+
data_from_other_collector = await bidi_session.network.get_data(
38+
request=request, data_type="response", collector=other_collector
39+
)
40+
assert data_from_other_collector == data
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import pytest
2+
import webdriver.bidi.error as error
3+
4+
from .. import PAGE_EMPTY_TEXT
5+
6+
pytestmark = pytest.mark.asyncio
7+
8+
9+
@pytest.mark.parametrize("disown", [True, False])
10+
async def test_single_collector(bidi_session, url, setup_collected_response, disown):
11+
[request, collector] = await setup_collected_response(
12+
fetch_url=url(PAGE_EMPTY_TEXT)
13+
)
14+
data = await bidi_session.network.get_data(
15+
request=request, data_type="response", collector=collector, disown=disown
16+
)
17+
# Assert the data retrieved with the disown parameter is still valid
18+
assert data["type"] == "string"
19+
assert data["value"] == "empty\n"
20+
21+
if disown:
22+
with pytest.raises(error.NoSuchNetworkDataException):
23+
await bidi_session.network.get_data(request=request, data_type="response")
24+
else:
25+
data_again = await bidi_session.network.get_data(
26+
request=request, data_type="response"
27+
)
28+
assert data_again == data
29+
30+
31+
async def test_several_collectors(
32+
bidi_session, url, add_data_collector, setup_collected_response
33+
):
34+
collector = await add_data_collector(
35+
collector_type="blob", data_types=["response"], max_encoded_data_size=1000
36+
)
37+
[request, other_collector] = await setup_collected_response(
38+
fetch_url=url(PAGE_EMPTY_TEXT)
39+
)
40+
41+
data = await bidi_session.network.get_data(
42+
request=request, data_type="response", collector=collector, disown=True
43+
)
44+
45+
# Check that the data can no longer be retrieved for the disowned collector
46+
with pytest.raises(error.NoSuchNetworkDataException):
47+
await bidi_session.network.get_data(
48+
request=request, data_type="response", collector=collector
49+
)
50+
51+
# Check that the data can still be retrieved for the other collector or
52+
# without any collector parameter.
53+
data_from_other_collector = await bidi_session.network.get_data(
54+
request=request, data_type="response", collector=other_collector
55+
)
56+
assert data_from_other_collector == data
57+
58+
data_without_collector = await bidi_session.network.get_data(
59+
request=request, data_type="response"
60+
)
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import pytest
2+
import webdriver.bidi.error as error
3+
4+
from .. import PAGE_EMPTY_TEXT
5+
6+
pytestmark = pytest.mark.asyncio
7+
8+
9+
@pytest.mark.parametrize("value", [None, False, 42, {}, []])
10+
async def test_params_request_invalid_type(bidi_session, value):
11+
with pytest.raises(error.InvalidArgumentException):
12+
await bidi_session.network.get_data(request=value, data_type="response")
13+
14+
15+
async def test_params_request_non_existent(bidi_session):
16+
with pytest.raises(error.NoSuchNetworkDataException):
17+
await bidi_session.network.get_data(
18+
request="does_not_exist", data_type="response"
19+
)
20+
21+
22+
@pytest.mark.parametrize("value", [None, False, 42, {}, []])
23+
async def test_params_data_type_invalid_type(
24+
bidi_session, url, setup_collected_response, value
25+
):
26+
[request, _] = await setup_collected_response(fetch_url=url(PAGE_EMPTY_TEXT))
27+
with pytest.raises(error.InvalidArgumentException):
28+
await bidi_session.network.get_data(request=request, data_type=value)
29+
30+
31+
@pytest.mark.parametrize("value", ["", "invalid"])
32+
async def test_params_data_type_invalid_value(
33+
bidi_session, url, setup_collected_response, value
34+
):
35+
[request, _] = await setup_collected_response(fetch_url=url(PAGE_EMPTY_TEXT))
36+
with pytest.raises(error.InvalidArgumentException):
37+
await bidi_session.network.get_data(request=request, data_type=value)
38+
39+
40+
@pytest.mark.parametrize("value", [False, 42, {}, []])
41+
async def test_params_collector_invalid_type(
42+
bidi_session, url, setup_collected_response, value
43+
):
44+
[request, _] = await setup_collected_response(fetch_url=url(PAGE_EMPTY_TEXT))
45+
with pytest.raises(error.InvalidArgumentException):
46+
await bidi_session.network.get_data(
47+
request=request, data_type="response", collector=value
48+
)
49+
50+
51+
async def test_params_collector_non_existent(
52+
bidi_session, url, setup_collected_response
53+
):
54+
[request, _] = await setup_collected_response(fetch_url=url(PAGE_EMPTY_TEXT))
55+
with pytest.raises(error.NoSuchNetworkCollectorException):
56+
await bidi_session.network.get_data(
57+
request=request, data_type="response", collector="does_not_exist"
58+
)
59+
60+
61+
@pytest.mark.parametrize("value", ["", "true", "false", 42, {}, []])
62+
async def test_params_disown_invalid_type(
63+
bidi_session, url, setup_collected_response, value
64+
):
65+
[request, _] = await setup_collected_response(fetch_url=url(PAGE_EMPTY_TEXT))
66+
67+
with pytest.raises(error.InvalidArgumentException):
68+
await bidi_session.network.get_data(
69+
request=request, data_type="response", disown=value
70+
)
71+
72+
73+
async def test_params_disown_true_without_collector(
74+
bidi_session, url, setup_collected_response
75+
):
76+
[request, _] = await setup_collected_response(fetch_url=url(PAGE_EMPTY_TEXT))
77+
with pytest.raises(error.InvalidArgumentException):
78+
await bidi_session.network.get_data(
79+
request=request, data_type="response", disown=True
80+
)
81+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import pytest
2+
import webdriver.bidi.error as error
3+
4+
from .. import PAGE_EMPTY_IMAGE, PAGE_EMPTY_TEXT, PAGE_OTHER_TEXT
5+
6+
pytestmark = pytest.mark.asyncio
7+
8+
9+
@pytest.mark.parametrize(
10+
"file, expected_value", [(PAGE_EMPTY_TEXT, "empty\n"), (PAGE_OTHER_TEXT, "other\n")]
11+
)
12+
async def test_request_text_file(
13+
bidi_session, url, setup_collected_response, file, expected_value
14+
):
15+
[request, _] = await setup_collected_response(fetch_url=url(file))
16+
data = await bidi_session.network.get_data(request=request, data_type="response")
17+
18+
assert data["type"] == "string"
19+
assert data["value"] == expected_value
20+
21+
22+
async def test_request_base64_file(
23+
bidi_session, url, setup_collected_response,
24+
):
25+
[request, _] = await setup_collected_response(fetch_url=url(PAGE_EMPTY_IMAGE))
26+
data = await bidi_session.network.get_data(request=request, data_type="response")
27+
28+
assert data["type"] == "base64"
29+
assert isinstance(data["value"], str)

0 commit comments

Comments
 (0)