summaryrefslogtreecommitdiffstats
path: root/remote/test/browser/network/browser_setCookie.js
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/browser/network/browser_setCookie.js')
-rw-r--r--remote/test/browser/network/browser_setCookie.js298
1 files changed, 298 insertions, 0 deletions
diff --git a/remote/test/browser/network/browser_setCookie.js b/remote/test/browser/network/browser_setCookie.js
new file mode 100644
index 0000000000..bb16e65c56
--- /dev/null
+++ b/remote/test/browser/network/browser_setCookie.js
@@ -0,0 +1,298 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const SJS_PATH = "/browser/remote/test/browser/network/sjs-cookies.sjs";
+
+const DEFAULT_HOST = "example.org";
+const ALT_HOST = "foo.example.org";
+const SECURE_HOST = "example.com";
+
+const DEFAULT_URL = `http://${DEFAULT_HOST}`;
+
+add_task(async function failureWithoutArguments({ client }) {
+ const { Network } = client;
+
+ let errorThrown = false;
+ try {
+ await Network.setCookie();
+ } catch (e) {
+ errorThrown = true;
+ }
+ ok(errorThrown, "Fails without any arguments");
+});
+
+add_task(async function failureWithMissingNameAndValue({ client }) {
+ const { Network } = client;
+
+ let errorThrown = false;
+ try {
+ await Network.setCookie({
+ value: "bar",
+ domain: "example.org",
+ });
+ } catch (e) {
+ errorThrown = true;
+ }
+ ok(errorThrown, "Fails without name specified");
+
+ errorThrown = false;
+ try {
+ await Network.setCookie({
+ name: "foo",
+ domain: "example.org",
+ });
+ } catch (e) {
+ errorThrown = true;
+ }
+ ok(errorThrown, "Fails without value specified");
+});
+
+add_task(async function failureWithMissingDomainAndURL({ client }) {
+ const { Network } = client;
+
+ let errorThrown = false;
+ try {
+ await Network.setCookie({ name: "foo", value: "bar" });
+ } catch (e) {
+ errorThrown = true;
+ }
+ ok(errorThrown, "Fails without domain and URL specified");
+});
+
+add_task(async function setCookieWithDomain({ client }) {
+ const { Network } = client;
+
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: ALT_HOST,
+ };
+
+ try {
+ const { success } = await Network.setCookie(cookie);
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function setCookieWithEmptyDomain({ client }) {
+ const { Network } = client;
+
+ try {
+ const { success } = await Network.setCookie({
+ name: "foo",
+ value: "bar",
+ url: "",
+ });
+ ok(!success, "Cookie has not been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 0, "No cookie has been found");
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function setCookieWithURL({ client }) {
+ const { Network } = client;
+
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: ALT_HOST,
+ };
+
+ try {
+ const { success } = await Network.setCookie({
+ name: cookie.name,
+ value: cookie.value,
+ url: `http://${ALT_HOST}`,
+ });
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function setCookieWithEmptyURL({ client }) {
+ const { Network } = client;
+
+ try {
+ const { success } = await Network.setCookie({
+ name: "foo",
+ value: "bar",
+ url: "",
+ });
+ ok(!success, "No cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 0, "No cookie has been found");
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function setCookieWithDomainAndURL({ client }) {
+ const { Network } = client;
+
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: ALT_HOST,
+ };
+
+ try {
+ const { success } = await Network.setCookie({
+ name: cookie.name,
+ value: cookie.value,
+ domain: cookie.domain,
+ url: `http://${DEFAULT_HOST}`,
+ });
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function setCookieWithHttpOnly({ client }) {
+ const { Network } = client;
+
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: DEFAULT_HOST,
+ httpOnly: true,
+ };
+
+ try {
+ const { success } = await Network.setCookie(cookie);
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function setCookieWithExpiry({ client }) {
+ const { Network } = client;
+
+ const tomorrow = Math.floor(Date.now() / 1000) + 60 * 60 * 24;
+
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: DEFAULT_HOST,
+ expires: tomorrow,
+ session: false,
+ };
+
+ try {
+ const { success } = await Network.setCookie(cookie);
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function setCookieWithPath({ client }) {
+ const { Network } = client;
+
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: ALT_HOST,
+ path: SJS_PATH,
+ };
+
+ try {
+ const { success } = await Network.setCookie(cookie);
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ } finally {
+ Services.cookies.removeAll();
+ }
+});
+
+add_task(async function testAddSameSiteCookie({ client }) {
+ const { Network } = client;
+
+ for (const sameSite of ["None", "Lax", "Strict"]) {
+ console.log(`Check same site value: ${sameSite}`);
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: DEFAULT_HOST,
+ };
+ if (sameSite != "None") {
+ cookie.sameSite = sameSite;
+ }
+
+ try {
+ const { success } = await Network.setCookie({
+ name: cookie.name,
+ value: cookie.value,
+ domain: cookie.domain,
+ sameSite,
+ });
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ } finally {
+ Services.cookies.removeAll();
+ }
+ }
+});
+
+add_task(async function testAddSecureCookie({ client }) {
+ const { Network } = client;
+
+ const cookie = {
+ name: "foo",
+ value: "bar",
+ domain: "example.com",
+ secure: true,
+ };
+
+ try {
+ const { success } = await Network.setCookie({
+ name: cookie.name,
+ value: cookie.value,
+ url: `https://${SECURE_HOST}`,
+ });
+ ok(success, "Cookie has been set");
+
+ const cookies = getCookies();
+ is(cookies.length, 1, "A single cookie has been found");
+ assertCookie(cookies[0], cookie);
+ ok(cookies[0].secure, `Cookie for HTTPS is secure`);
+ } finally {
+ Services.cookies.removeAll();
+ }
+});