From a97349bf22f5957f5a89eea236e273098f3de2bd Mon Sep 17 00:00:00 2001 From: Thiago Perrotta <tperrotta@chromium.org> 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 | 35 +++++++++++++++++++ 4 files changed, 44 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 d3e318d1705f07..7b688dd1a6cfa9 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 940aa7cffdd2ef..b82c8539e86ba5 100644 --- a/tools/webdriver/webdriver/bidi/modules/network.py +++ b/tools/webdriver/webdriver/bidi/modules/network.py @@ -57,6 +57,11 @@ def _add_intercept(self, result: Mapping[str, Any]) -> Any: assert result["intercept"] is not None return result["intercept"] + @command + def fail_request(self, request: str) -> Mapping[str, Any]: + params: MutableMapping[str, Any] = {"request": request} + return params + @command def remove_intercept(self, intercept: str) -> Mapping[str, Any]: params: MutableMapping[str, Any] = {"intercept": intercept} 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 00000000000000..e69de29bb2d1d6 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 00000000000000..29b653c0923580 --- /dev/null +++ b/webdriver/tests/bidi/network/fail_request/invalid.py @@ -0,0 +1,35 @@ +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): + await setup_network_test(events=[ + "network.responseCompleted", + ]) + on_response_completed = wait_for_event("network.responseCompleted") + + text_url = url(PAGE_EMPTY_TEXT) + await fetch(text_url) + + response_completed_event = await on_response_completed + request = response_completed_event["request"]["request"] + + with pytest.raises(error.NoSuchRequestException): + await bidi_session.network.fail_request(request=request)