summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/mozilla/tests/webdriver/bidi/storage/set_cookie/partition.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/mozilla/tests/webdriver/bidi/storage/set_cookie/partition.py')
-rw-r--r--testing/web-platform/mozilla/tests/webdriver/bidi/storage/set_cookie/partition.py150
1 files changed, 150 insertions, 0 deletions
diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/storage/set_cookie/partition.py b/testing/web-platform/mozilla/tests/webdriver/bidi/storage/set_cookie/partition.py
new file mode 100644
index 0000000000..f8e2823dbc
--- /dev/null
+++ b/testing/web-platform/mozilla/tests/webdriver/bidi/storage/set_cookie/partition.py
@@ -0,0 +1,150 @@
+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
+
+
+async def test_partition_context(
+ bidi_session,
+ set_cookie,
+ top_context,
+ new_tab,
+ test_page,
+ test_page_cross_origin,
+ domain_value,
+):
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=test_page, wait="complete"
+ )
+ source_origin_1 = get_origin_from_url(test_page)
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=test_page_cross_origin, wait="complete"
+ )
+ source_origin_2 = get_origin_from_url(test_page_cross_origin)
+
+ cookie_name = "foo"
+ cookie_value = "bar"
+ cookie_domain = domain_value()
+ new_tab_partition = BrowsingContextPartitionDescriptor(new_tab["context"])
+
+ set_cookie_result = await set_cookie(
+ cookie=PartialCookie(
+ domain=cookie_domain,
+ name=cookie_name,
+ value=NetworkStringValue(cookie_value),
+ ),
+ partition=new_tab_partition,
+ )
+
+ assert set_cookie_result == {"partitionKey": {"sourceOrigin": source_origin_1}}
+
+ # Check that added cookies are present on the right context.
+ cookies = await bidi_session.storage.get_cookies(partition=new_tab_partition)
+
+ recursive_compare(
+ {
+ "cookies": [
+ {
+ "domain": cookie_domain,
+ "httpOnly": False,
+ "name": cookie_name,
+ "path": "/",
+ "sameSite": "none",
+ "secure": False,
+ "size": 6,
+ "value": {"type": "string", "value": cookie_value},
+ }
+ ],
+ "partitionKey": {"sourceOrigin": source_origin_1},
+ },
+ cookies,
+ )
+
+ # Check that added cookies are not present on the other context.
+ cookies = await bidi_session.storage.get_cookies(
+ partition=BrowsingContextPartitionDescriptor(top_context["context"])
+ )
+
+ recursive_compare(
+ {"cookies": [], "partitionKey": {"sourceOrigin": source_origin_2}}, cookies
+ )
+
+
+@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"])
+async def test_partition_context_iframe(
+ bidi_session, new_tab, inline, domain_value, domain, set_cookie
+):
+ iframe_url = inline("<div id='in-iframe'>foo</div>", domain=domain)
+ source_origin_for_iframe = get_origin_from_url(iframe_url)
+ page_url = inline(f"<iframe src='{iframe_url}'></iframe>")
+ source_origin_for_page = get_origin_from_url(page_url)
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page_url, wait="complete"
+ )
+
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+ iframe_context = contexts[0]["children"][0]
+ iframe_partition = BrowsingContextPartitionDescriptor(iframe_context["context"])
+
+ cookie_name = "foo"
+ cookie_value = "bar"
+ await set_cookie(
+ cookie=PartialCookie(
+ domain=domain_value(domain),
+ name=cookie_name,
+ value=NetworkStringValue(cookie_value),
+ ),
+ partition=iframe_partition,
+ )
+
+ # Check that added cookies are present on the right context
+ cookies = await bidi_session.storage.get_cookies(partition=iframe_partition)
+
+ expected_cookies = [
+ {
+ "domain": domain_value(domain=domain),
+ "httpOnly": False,
+ "name": cookie_name,
+ "path": "/",
+ "sameSite": "none",
+ "secure": False,
+ "size": 6,
+ "value": {"type": "string", "value": cookie_value},
+ }
+ ]
+ recursive_compare(
+ {
+ "cookies": expected_cookies,
+ "partitionKey": {"sourceOrigin": source_origin_for_iframe},
+ },
+ cookies,
+ )
+
+ cookies = await bidi_session.storage.get_cookies(
+ partition=BrowsingContextPartitionDescriptor(new_tab["context"])
+ )
+ # When the iframe is on the different domain we can verify that top context has no iframe cookie.
+ if domain == "alt":
+ recursive_compare(
+ {
+ "cookies": [],
+ "partitionKey": {"sourceOrigin": source_origin_for_page},
+ },
+ cookies,
+ )
+ else:
+ # When the iframe is on the same domain, since the browsing context partition is defined by user context and origin,
+ # which will be the same for the page, we get the same cookies as for the iframe
+ recursive_compare(
+ {
+ "cookies": expected_cookies,
+ "partitionKey": {"sourceOrigin": source_origin_for_page},
+ },
+ cookies,
+ )