|
Packit |
f0b94e |
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
|
|
Packit |
f0b94e |
/* Any copyright is dedicated to the Public Domain.
|
|
Packit |
f0b94e |
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
"use strict";
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
// Test that the storage panel is able to display multiple cookies with the same
|
|
Packit |
f0b94e |
// name (and different paths).
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
const {StorageFront} = require("devtools/shared/fronts/storage");
|
|
Packit |
f0b94e |
Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/server/tests/browser/storage-helpers.js", this);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
const TESTDATA = {
|
|
Packit |
f0b94e |
"http://test1.example.org": [
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
name: "name",
|
|
Packit |
f0b94e |
value: "value1",
|
|
Packit |
f0b94e |
expires: 0,
|
|
Packit |
f0b94e |
path: "/",
|
|
Packit |
f0b94e |
host: "test1.example.org",
|
|
Packit |
f0b94e |
isDomain: false,
|
|
Packit |
f0b94e |
isSecure: false,
|
|
Packit |
f0b94e |
},
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
name: "name",
|
|
Packit |
f0b94e |
value: "value2",
|
|
Packit |
f0b94e |
expires: 0,
|
|
Packit |
f0b94e |
path: "/path2/",
|
|
Packit |
f0b94e |
host: "test1.example.org",
|
|
Packit |
f0b94e |
isDomain: false,
|
|
Packit |
f0b94e |
isSecure: false,
|
|
Packit |
f0b94e |
},
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
name: "name",
|
|
Packit |
f0b94e |
value: "value3",
|
|
Packit |
f0b94e |
expires: 0,
|
|
Packit |
f0b94e |
path: "/path3/",
|
|
Packit |
f0b94e |
host: "test1.example.org",
|
|
Packit |
f0b94e |
isDomain: false,
|
|
Packit |
f0b94e |
isSecure: false,
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
]
|
|
Packit |
f0b94e |
};
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
add_task(async function () {
|
|
Packit |
f0b94e |
await openTabAndSetupStorage(MAIN_DOMAIN + "storage-cookies-same-name.html");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
initDebuggerServer();
|
|
Packit |
f0b94e |
let client = new DebuggerClient(DebuggerServer.connectPipe());
|
|
Packit |
f0b94e |
let form = await connectDebuggerClient(client);
|
|
Packit |
f0b94e |
let front = StorageFront(client, form);
|
|
Packit |
f0b94e |
let data = await front.listStores();
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
ok(data.cookies, "Cookies storage actor is present");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
await testCookies(data.cookies);
|
|
Packit |
f0b94e |
await clearStorage();
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
// Forcing GC/CC to get rid of docshells and windows created by this test.
|
|
Packit |
f0b94e |
forceCollections();
|
|
Packit |
f0b94e |
await client.close();
|
|
Packit |
f0b94e |
forceCollections();
|
|
Packit |
f0b94e |
DebuggerServer.destroy();
|
|
Packit |
f0b94e |
forceCollections();
|
|
Packit |
f0b94e |
});
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function testCookies(cookiesActor) {
|
|
Packit |
f0b94e |
let numHosts = Object.keys(cookiesActor.hosts).length;
|
|
Packit |
f0b94e |
is(numHosts, 1, "Correct number of host entries for cookies");
|
|
Packit |
f0b94e |
return testCookiesObjects(0, cookiesActor.hosts, cookiesActor);
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var testCookiesObjects = async function (index, hosts, cookiesActor) {
|
|
Packit |
f0b94e |
let host = Object.keys(hosts)[index];
|
|
Packit |
f0b94e |
let matchItems = data => {
|
|
Packit |
f0b94e |
is(data.total, TESTDATA[host].length,
|
|
Packit |
f0b94e |
"Number of cookies in host " + host + " matches");
|
|
Packit |
f0b94e |
for (let item of data.data) {
|
|
Packit |
f0b94e |
let found = false;
|
|
Packit |
f0b94e |
for (let toMatch of TESTDATA[host]) {
|
|
Packit |
f0b94e |
if (item.name === toMatch.name &&
|
|
Packit |
f0b94e |
item.host === toMatch.host &&
|
|
Packit |
f0b94e |
item.path === toMatch.path) {
|
|
Packit |
f0b94e |
found = true;
|
|
Packit |
f0b94e |
ok(true, "Found cookie " + item.name + " in response");
|
|
Packit |
f0b94e |
is(item.value.str, toMatch.value, "The value matches.");
|
|
Packit |
f0b94e |
is(item.expires, toMatch.expires, "The expiry time matches.");
|
|
Packit |
f0b94e |
is(item.path, toMatch.path, "The path matches.");
|
|
Packit |
f0b94e |
is(item.host, toMatch.host, "The host matches.");
|
|
Packit |
f0b94e |
is(item.isSecure, toMatch.isSecure, "The isSecure value matches.");
|
|
Packit |
f0b94e |
is(item.isDomain, toMatch.isDomain, "The isDomain value matches.");
|
|
Packit |
f0b94e |
break;
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
ok(found, "cookie " + item.name + " should exist in response");
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
};
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
ok(!!TESTDATA[host], "Host is present in the list : " + host);
|
|
Packit |
f0b94e |
matchItems(await cookiesActor.getStoreObjects(host));
|
|
Packit |
f0b94e |
if (index == Object.keys(hosts).length - 1) {
|
|
Packit |
f0b94e |
return;
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
await testCookiesObjects(++index, hosts, cookiesActor);
|
|
Packit |
f0b94e |
};
|