gecko-dev/netwerk/test/unit/test_cookie_header.js
Ehsan Akhgari 868c13b5e5 Bug 1547397 - Part 2: Move some xpcshell tests for cookies out of extensions/cookies; r=baku
Differential Revision: https://phabricator.services.mozilla.com/D29115

--HG--
rename : extensions/cookie/test/unit/head_cookies.js => netwerk/test/unit/head_cookies.js
rename : extensions/cookie/test/unit/test_bug526789.js => netwerk/test/unit/test_bug526789.js
rename : extensions/cookie/test/unit/test_bug650522.js => netwerk/test/unit/test_bug650522.js
rename : extensions/cookie/test/unit/test_bug667087.js => netwerk/test/unit/test_bug667087.js
rename : extensions/cookie/test/unit/test_cookies_async_failure.js => netwerk/test/unit/test_cookies_async_failure.js
rename : extensions/cookie/test/unit/test_cookies_persistence.js => netwerk/test/unit/test_cookies_persistence.js
rename : extensions/cookie/test/unit/test_cookies_privatebrowsing.js => netwerk/test/unit/test_cookies_privatebrowsing.js
rename : extensions/cookie/test/unit/test_cookies_profile_close.js => netwerk/test/unit/test_cookies_profile_close.js
rename : extensions/cookie/test/unit/test_cookies_read.js => netwerk/test/unit/test_cookies_read.js
rename : extensions/cookie/test/unit/test_cookies_sync_failure.js => netwerk/test/unit/test_cookies_sync_failure.js
rename : extensions/cookie/test/unit/test_cookies_thirdparty.js => netwerk/test/unit/test_cookies_thirdparty.js
rename : extensions/cookie/test/unit/test_cookies_thirdparty_nonsecure_session.js => netwerk/test/unit/test_cookies_thirdparty_nonsecure_session.js
rename : extensions/cookie/test/unit/test_cookies_thirdparty_session.js => netwerk/test/unit/test_cookies_thirdparty_session.js
rename : extensions/cookie/test/unit/test_domain_eviction.js => netwerk/test/unit/test_domain_eviction.js
rename : extensions/cookie/test/unit/test_eviction.js => netwerk/test/unit/test_eviction.js
rename : extensions/cookie/test/unit/test_schema_2_migration.js => netwerk/test/unit/test_schema_2_migration.js
rename : extensions/cookie/test/unit/test_schema_3_migration.js => netwerk/test/unit/test_schema_3_migration.js
extra : moz-landing-system : lando
2019-04-30 14:06:27 +00:00

100 lines
2.5 KiB
JavaScript

// This file tests bug 250375
const {HttpServer} = ChromeUtils.import("resource://testing-common/httpd.js");
XPCOMUtils.defineLazyGetter(this, "URL", function() {
return "http://localhost:" + httpserv.identity.primaryPort + "/";
});
function inChildProcess() {
return Cc["@mozilla.org/xre/app-info;1"]
.getService(Ci.nsIXULRuntime)
.processType != Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
}
function check_request_header(chan, name, value) {
var chanValue;
try {
chanValue = chan.getRequestHeader(name);
} catch (e) {
do_throw("Expected to find header '" + name + "' but didn't find it, got exception: " + e);
}
dump("Value for header '" + name + "' is '" + chanValue + "'\n");
Assert.equal(chanValue, value);
}
var cookieVal = "C1=V1";
var listener = {
onStartRequest: function test_onStartR(request) {
try {
var chan = request.QueryInterface(Ci.nsIHttpChannel);
check_request_header(chan, "Cookie", cookieVal);
} catch (e) {
do_throw("Unexpected exception: " + e);
}
throw Cr.NS_ERROR_ABORT;
},
onDataAvailable: function test_ODA() {
throw Cr.NS_ERROR_UNEXPECTED;
},
onStopRequest: function test_onStopR(request, status) {
if (this._iteration == 1) {
run_test_continued();
} else {
do_test_pending();
httpserv.stop(do_test_finished);
}
do_test_finished();
},
_iteration: 1
};
function makeChan() {
return NetUtil.newChannel({uri: URL, loadUsingSystemPrincipal: true})
.QueryInterface(Ci.nsIHttpChannel);
}
var httpserv = null;
function run_test() {
// Allow all cookies if the pref service is available in this process.
if (!inChildProcess()) {
Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
Services.prefs.setBoolPref("network.cookieSettings.unblocked_for_testing", true);
}
httpserv = new HttpServer();
httpserv.start(-1);
var chan = makeChan();
chan.setRequestHeader("Cookie", cookieVal, false);
chan.asyncOpen(listener);
do_test_pending();
}
function run_test_continued() {
var chan = makeChan();
var cookServ = Cc["@mozilla.org/cookieService;1"]
.getService(Ci.nsICookieService);
var cookie2 = "C2=V2";
cookServ.setCookieString(chan.URI, null, cookie2, chan);
chan.setRequestHeader("Cookie", cookieVal, false);
// We expect that the setRequestHeader overrides the
// automatically-added one, so insert cookie2 in front
cookieVal = cookie2 + "; " + cookieVal;
listener._iteration++;
chan.asyncOpen(listener);
do_test_pending();
}