mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-31 11:58:40 +09:00
196 lines
6.3 KiB
JavaScript
196 lines
6.3 KiB
JavaScript
/*
|
|
* Bug 1267910 - Add test cases for the backward compatiability and originAttributes
|
|
* of nsICookieManager2.
|
|
*/
|
|
|
|
var {utils: Cu, interfaces: Ci, classes: Cc} = Components;
|
|
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
|
|
const BASE_URL = "http://example.org/";
|
|
|
|
const COOKIE = {
|
|
host: BASE_URL,
|
|
path: "/",
|
|
name: "test1",
|
|
value: "yes",
|
|
isSecure: false,
|
|
isHttpOnly: false,
|
|
isSession: true,
|
|
expiry: 2145934800,
|
|
};
|
|
|
|
const COOKIE_OA_DEFAULT = {
|
|
host: BASE_URL,
|
|
path: "/",
|
|
name: "test0",
|
|
value: "yes0",
|
|
isSecure: false,
|
|
isHttpOnly: false,
|
|
isSession: true,
|
|
expiry: 2145934800,
|
|
originAttributes: {},
|
|
};
|
|
|
|
const COOKIE_OA_1 = {
|
|
host: BASE_URL,
|
|
path: "/",
|
|
name: "test1",
|
|
value: "yes1",
|
|
isSecure: false,
|
|
isHttpOnly: false,
|
|
isSession: true,
|
|
expiry: 2145934800,
|
|
originAttributes: {userContextId: 1},
|
|
};
|
|
|
|
function checkCookie(cookie, cookieObj) {
|
|
for (let prop of Object.keys(cookieObj)) {
|
|
if (prop === "originAttributes") {
|
|
ok(ChromeUtils.isOriginAttributesEqual(cookie[prop], cookieObj[prop]),
|
|
"Check cookie: " + prop);
|
|
} else {
|
|
equal(cookie[prop], cookieObj[prop], "Check cookie: " + prop);
|
|
}
|
|
}
|
|
}
|
|
|
|
function countCookies(enumerator) {
|
|
let cnt = 0;
|
|
|
|
while (enumerator.hasMoreElements()) {
|
|
cnt++;
|
|
enumerator.getNext();
|
|
}
|
|
|
|
return cnt;
|
|
}
|
|
|
|
function run_test() {
|
|
// Allow all cookies.
|
|
Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
|
|
|
|
// Enable user context id
|
|
Services.prefs.setBoolPref("privacy.userContext.enabled", true);
|
|
|
|
add_test(test_backward_compatiability);
|
|
add_test(test_originAttributes);
|
|
|
|
|
|
run_next_test();
|
|
}
|
|
|
|
/*
|
|
* Test for backward compatiablility that APIs works correctly without
|
|
* originAttributes.
|
|
*/
|
|
function test_backward_compatiability() {
|
|
// Clear cookies.
|
|
Services.cookies.removeAll();
|
|
|
|
// Call Add() to add a cookie without originAttributes
|
|
Services.cookies.add(COOKIE.host,
|
|
COOKIE.path,
|
|
COOKIE.name,
|
|
COOKIE.value,
|
|
COOKIE.isSecure,
|
|
COOKIE.isHttpOnly,
|
|
COOKIE.isSession,
|
|
COOKIE.expiry);
|
|
|
|
// Call getCookiesFromHost() to get cookies without originAttributes
|
|
let enumerator = Services.cookies.getCookiesFromHost(BASE_URL);
|
|
|
|
ok(enumerator.hasMoreElements(), "Cookies available");
|
|
let foundCookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
|
|
|
|
checkCookie(foundCookie, COOKIE);
|
|
|
|
ok(!enumerator.hasMoreElements(), "We should get only one cookie");
|
|
|
|
run_next_test();
|
|
}
|
|
|
|
/*
|
|
* Test for originAttributes.
|
|
*/
|
|
function test_originAttributes() {
|
|
// Clear cookies.
|
|
Services.cookies.removeAll();
|
|
|
|
// Add a cookie for default originAttributes.
|
|
Services.cookies.add(COOKIE_OA_DEFAULT.host,
|
|
COOKIE_OA_DEFAULT.path,
|
|
COOKIE_OA_DEFAULT.name,
|
|
COOKIE_OA_DEFAULT.value,
|
|
COOKIE_OA_DEFAULT.isSecure,
|
|
COOKIE_OA_DEFAULT.isHttpOnly,
|
|
COOKIE_OA_DEFAULT.isSession,
|
|
COOKIE_OA_DEFAULT.expiry,
|
|
COOKIE_OA_DEFAULT.originAttributes);
|
|
|
|
// Get cookies for default originAttributes.
|
|
let enumerator = Services.cookies.getCookiesFromHost(BASE_URL, COOKIE_OA_DEFAULT.originAttributes);
|
|
|
|
// Check that do we get cookie correctly.
|
|
ok(enumerator.hasMoreElements(), "Cookies available");
|
|
let foundCookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
|
|
checkCookie(foundCookie, COOKIE_OA_DEFAULT);
|
|
|
|
// We should only get one cookie.
|
|
ok(!enumerator.hasMoreElements(), "We should get only one cookie");
|
|
|
|
// Get cookies for originAttributes with user context id 1.
|
|
enumerator = Services.cookies.getCookiesFromHost(BASE_URL, COOKIE_OA_1.originAttributes);
|
|
|
|
// Check that we will not get cookies if the originAttributes is different.
|
|
ok(!enumerator.hasMoreElements(), "No cookie should be here");
|
|
|
|
// Add a cookie for originAttributes with user context id 1.
|
|
Services.cookies.add(COOKIE_OA_1.host,
|
|
COOKIE_OA_1.path,
|
|
COOKIE_OA_1.name,
|
|
COOKIE_OA_1.value,
|
|
COOKIE_OA_1.isSecure,
|
|
COOKIE_OA_1.isHttpOnly,
|
|
COOKIE_OA_1.isSession,
|
|
COOKIE_OA_1.expiry,
|
|
COOKIE_OA_1.originAttributes);
|
|
|
|
// Get cookies for originAttributes with user context id 1.
|
|
enumerator = Services.cookies.getCookiesFromHost(BASE_URL, COOKIE_OA_1.originAttributes);
|
|
|
|
// Check that do we get cookie correctly.
|
|
ok(enumerator.hasMoreElements(), "Cookies available");
|
|
foundCookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
|
|
checkCookie(foundCookie, COOKIE_OA_1);
|
|
|
|
// We should only get one cookie.
|
|
ok(!enumerator.hasMoreElements(), "We should get only one cookie");
|
|
|
|
// Check that add a cookie will not affect cookies in different originAttributes.
|
|
enumerator = Services.cookies.getCookiesFromHost(BASE_URL, COOKIE_OA_DEFAULT.originAttributes);
|
|
equal(countCookies(enumerator), 1, "We should get only one cookie for default originAttributes");
|
|
|
|
// Remove a cookie for originAttributes with user context id 1.
|
|
Services.cookies.remove(COOKIE_OA_1.host, COOKIE_OA_1.name, COOKIE_OA_1.path,
|
|
false, COOKIE_OA_1.originAttributes);
|
|
|
|
// Check that remove will not affect cookies in default originAttributes.
|
|
enumerator = Services.cookies.getCookiesFromHost(BASE_URL, COOKIE_OA_DEFAULT.originAttributes);
|
|
equal(countCookies(enumerator), 1, "Get one cookie for default originAttributes.");
|
|
|
|
// Check that should be no cookie for originAttributes with user context id 1.
|
|
enumerator = Services.cookies.getCookiesFromHost(BASE_URL, COOKIE_OA_1.originAttributes);
|
|
equal(countCookies(enumerator), 0, "No cookie shold be here");
|
|
|
|
// Remove a cookie for default originAttributes.
|
|
Services.cookies.remove(COOKIE_OA_DEFAULT.host, COOKIE_OA_DEFAULT.name, COOKIE_OA_DEFAULT.path,
|
|
false, COOKIE_OA_DEFAULT.originAttributes);
|
|
|
|
// Check remove() works correctly for default originAttributes.
|
|
enumerator = Services.cookies.getCookiesFromHost(BASE_URL, COOKIE_OA_DEFAULT.originAttributes);
|
|
equal(countCookies(enumerator), 0, "No cookie shold be here");
|
|
|
|
run_next_test();
|
|
}
|