diff options
Diffstat (limited to 'testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies')
-rw-r--r-- | testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/__init__.py | 0 | ||||
-rw-r--r-- | testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/partition.py | 114 |
2 files changed, 114 insertions, 0 deletions
diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/__init__.py b/testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/__init__.py diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/partition.py b/testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/partition.py new file mode 100644 index 0000000000..d8e2729fe2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/storage/delete_cookies/partition.py @@ -0,0 +1,114 @@ +import pytest +from tests.bidi import recursive_compare +from tests.support.helpers import get_origin_from_url +from webdriver.bidi.modules.network import NetworkStringValue +from webdriver.bidi.modules.storage import ( + BrowsingContextPartitionDescriptor, + PartialCookie, +) + +pytestmark = pytest.mark.asyncio + + +@pytest.mark.parametrize( + "with_document_cookie", + [True, False], + ids=["with document cookie", "with set cookie"], +) +async def test_partition_context( + bidi_session, + new_tab, + test_page, + domain_value, + add_cookie, + set_cookie, + with_document_cookie, +): + await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=test_page, wait="complete" + ) + + cookie_name = "foo" + cookie_value = "bar" + source_origin = get_origin_from_url(test_page) + partition = BrowsingContextPartitionDescriptor(new_tab["context"]) + if with_document_cookie: + await add_cookie(new_tab["context"], cookie_name, cookie_value) + else: + await set_cookie( + cookie=PartialCookie( + domain=domain_value(), + name=cookie_name, + value=NetworkStringValue(cookie_value), + ), + partition=partition, + ) + + result = await bidi_session.storage.delete_cookies(partition=partition) + recursive_compare({"partitionKey": {"sourceOrigin": source_origin}}, result) + + result = await bidi_session.storage.get_cookies(partition=partition) + assert result["cookies"] == [] + + +@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"]) +async def test_partition_context_iframe_with_set_cookie( + bidi_session, new_tab, inline, domain_value, domain, set_cookie +): + iframe_url = inline("<div id='in-iframe'>foo</div>", domain=domain) + page_url = inline(f"<iframe src='{iframe_url}'></iframe>") + await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=page_url, wait="complete" + ) + source_origin = get_origin_from_url(iframe_url) + + contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"]) + iframe_context = contexts[0]["children"][0] + + cookie_name = "foo" + cookie_value = "bar" + frame_partition = BrowsingContextPartitionDescriptor(iframe_context["context"]) + await set_cookie( + cookie=PartialCookie( + domain=domain_value(domain), + name=cookie_name, + value=NetworkStringValue(cookie_value), + ), + partition=frame_partition, + ) + + result = await bidi_session.storage.delete_cookies(partition=frame_partition) + recursive_compare({"partitionKey": {"sourceOrigin": source_origin}}, result) + + result = await bidi_session.storage.get_cookies(partition=frame_partition) + assert result["cookies"] == [] + + +# Because of Dynamic First-Party Isolation, adding the cookie with `document.cookie` +# works only with same-origin iframes. +async def test_partition_context_same_origin_iframe_with_document_cookie( + bidi_session, + new_tab, + inline, + add_cookie, +): + iframe_url = inline("<div id='in-iframe'>foo</div>") + page_url = inline(f"<iframe src='{iframe_url}'></iframe>") + await bidi_session.browsing_context.navigate( + context=new_tab["context"], url=page_url, wait="complete" + ) + source_origin = get_origin_from_url(iframe_url) + + contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"]) + iframe_context = contexts[0]["children"][0] + + cookie_name = "foo" + cookie_value = "bar" + frame_partition = BrowsingContextPartitionDescriptor(iframe_context["context"]) + await add_cookie(iframe_context["context"], cookie_name, cookie_value) + + result = await bidi_session.storage.delete_cookies(partition=frame_partition) + recursive_compare({"partitionKey": {"sourceOrigin": source_origin}}, result) + + result = await bidi_session.storage.get_cookies(partition=frame_partition) + assert result["cookies"] == [] |