fune/netwerk/test/unit_ipc/test_cookie_header_stripped.js
Valentin Gosu aac6fb9470 Bug 1460609 - Cookies are for parents r=mayhemer
Make sure cookies aren't saved on channel headers in the content process.
Adds test to verify that this works, and removes tests that expected cookie headers to be visible to the child.

MozReview-Commit-ID: KOB83xpuAlF

--HG--
extra : rebase_source : 6f9a5ef570fb23200acf8d75285e67d80b7c27f0
2018-06-07 14:12:37 +02:00

68 lines
2.4 KiB
JavaScript

"use strict";
ChromeUtils.import("resource://testing-common/httpd.js");
ChromeUtils.import("resource://gre/modules/Services.jsm");
const TEST_DOMAIN = "www.example.com";
XPCOMUtils.defineLazyGetter(this, "URL", function() {
return "http://" + TEST_DOMAIN +":" + httpserv.identity.primaryPort + "/path";
});
const responseBody1 = "response";
function requestHandler(metadata, response)
{
response.setHeader("Content-Type", "text/plain");
response.setHeader("Set-Cookie", "tom=cool; Max-Age=10", true);
response.bodyOutputStream.write(responseBody1, responseBody1.length);
}
let httpserv = null;
function run_test() {
httpserv = new HttpServer();
httpserv.registerPathHandler("/path", requestHandler);
httpserv.start(-1);
httpserv.identity.add("http", TEST_DOMAIN, httpserv.identity.primaryPort);
registerCleanupFunction(() => {
Services.cookies.removeCookiesWithOriginAttributes("{}", TEST_DOMAIN);
Services.prefs.clearUserPref("network.dns.localDomains");
Services.prefs.clearUserPref("network.cookie.cookieBehavior");
httpserv.stop();
httpserv = null;
});
Services.prefs.setCharPref("network.dns.localDomains", TEST_DOMAIN);
Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
Services.cookies.removeCookiesWithOriginAttributes("{}", TEST_DOMAIN);
// Sends back the URL to the child script
do_await_remote_message("start-test").then(() => {
do_send_remote_message("start-test-done", URL);
});
// Sends back the cookie count for the domain
// Should only be one - from Set-Cookie
do_await_remote_message("check-cookie-count").then(() => {
do_send_remote_message("check-cookie-count-done", Services.cookies.countCookiesFromHost(TEST_DOMAIN));
});
// Sends back the cookie count for the domain
// There should be 2 cookies. One from the Set-Cookie header, the other set
// manually.
do_await_remote_message("second-check-cookie-count").then(() => {
do_send_remote_message("second-check-cookie-count-done", Services.cookies.countCookiesFromHost(TEST_DOMAIN));
});
// Sets a cookie for the test domain
do_await_remote_message("set-cookie").then(() => {
const expiry = Date.now() + 24 * 60 * 60;
Services.cookies.add(TEST_DOMAIN, "/", "cookieName", "cookieValue", false, false, false, expiry, {});
do_send_remote_message("set-cookie-done");
});
// Run the actual test logic
run_test_in_child("child_cookie_header.js");
}