From fb2fcbd681328de68fbad1eb3d961fc250bd77a2 Mon Sep 17 00:00:00 2001 From: Thiago Perrotta Date: Thu, 19 Oct 2023 17:19:50 +0200 Subject: [PATCH] test: add network interception fail request invalidation tests --- tools/webdriver/webdriver/bidi/error.py | 4 +++ .../webdriver/bidi/modules/network.py | 5 +++ .../bidi/network/fail_request/__init__.py | 0 .../bidi/network/fail_request/invalid.py | 36 +++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 webdriver/tests/bidi/network/fail_request/__init__.py create mode 100644 webdriver/tests/bidi/network/fail_request/invalid.py diff --git a/tools/webdriver/webdriver/bidi/error.py b/tools/webdriver/webdriver/bidi/error.py index d3e318d1705f073..7b688dd1a6cfa95 100644 --- a/tools/webdriver/webdriver/bidi/error.py +++ b/tools/webdriver/webdriver/bidi/error.py @@ -67,6 +67,10 @@ class NoSuchNodeException(BidiException): error_code = "no such node" +class NoSuchRequestException(BidiException): + error_code = "no such request" + + class NoSuchScriptException(BidiException): error_code = "no such script" diff --git a/tools/webdriver/webdriver/bidi/modules/network.py b/tools/webdriver/webdriver/bidi/modules/network.py index 940aa7cffdd2ef7..622f083dc82e93a 100644 --- a/tools/webdriver/webdriver/bidi/modules/network.py +++ b/tools/webdriver/webdriver/bidi/modules/network.py @@ -61,3 +61,8 @@ def _add_intercept(self, result: Mapping[str, Any]) -> Any: def remove_intercept(self, intercept: str) -> Mapping[str, Any]: params: MutableMapping[str, Any] = {"intercept": intercept} return params + + @command + def fail_request(self, request: str) -> Mapping[str, Any]: + params: MutableMapping[str, Any] = {"request": request} + return params diff --git a/webdriver/tests/bidi/network/fail_request/__init__.py b/webdriver/tests/bidi/network/fail_request/__init__.py new file mode 100644 index 000000000000000..e69de29bb2d1d64 diff --git a/webdriver/tests/bidi/network/fail_request/invalid.py b/webdriver/tests/bidi/network/fail_request/invalid.py new file mode 100644 index 000000000000000..46b79b0f4d0bd5f --- /dev/null +++ b/webdriver/tests/bidi/network/fail_request/invalid.py @@ -0,0 +1,36 @@ +import pytest +import webdriver.bidi.error as error + +pytestmark = pytest.mark.asyncio + +PAGE_EMPTY_TEXT = "/webdriver/tests/bidi/network/support/empty.txt" + + +@pytest.mark.parametrize("value", [None, False, 42, {}, []]) +async def test_params_request_invalid_type(bidi_session, value): + with pytest.raises(error.InvalidArgumentException): + await bidi_session.network.fail_request(request=value) + + +@pytest.mark.parametrize("value", ["", "foo"]) +async def test_params_request_invalid_value(bidi_session, value): + with pytest.raises(error.NoSuchRequestException): + await bidi_session.network.fail_request(request=value) + + +async def test_params_request_no_such_request(bidi_session, setup_network_test, + wait_for_event, fetch, url): + network_events = await setup_network_test(events=[ + "network.responseCompleted", + ]) + response_completed_events = network_events["network.responseCompleted"] + + text_url = url(PAGE_EMPTY_TEXT) + on_response_completed = wait_for_event("network.responseCompleted") + await fetch(text_url) + await on_response_completed + + request = response_completed_events[0]["request"]["request"] + + with pytest.raises(error.NoSuchRequestException): + await bidi_session.network.fail_request(request=request)