mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 05:39:41 +02:00
Differential Revision: https://phabricator.services.mozilla.com/D62119 --HG-- extra : moz-landing-system : lando
298 lines
6.7 KiB
JavaScript
298 lines
6.7 KiB
JavaScript
/* 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();
|
|
}
|
|
});
|