test_cookie_ipv6.js (1516B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 /* 6 * Test that channels with different LoadInfo 7 * are stored in separate namespaces ("cookie jars") 8 */ 9 10 "use strict"; 11 12 let ip = "[::1]"; 13 ChromeUtils.defineLazyGetter(this, "URL", function () { 14 return `http://${ip}:${httpserver.identity.primaryPort}/`; 15 }); 16 17 const { HttpServer } = ChromeUtils.importESModule( 18 "resource://testing-common/httpd.sys.mjs" 19 ); 20 21 let httpserver = new HttpServer(); 22 23 function cookieSetHandler(metadata, response) { 24 response.setStatusLine(metadata.httpVersion, 200, "Ok"); 25 response.setHeader( 26 "Set-Cookie", 27 `Set-Cookie: T1=T2; path=/; SameSite=Lax; domain=${ip}; httponly`, 28 false 29 ); 30 response.setHeader("Content-Type", "text/html"); 31 response.setHeader("Content-Length", "2"); 32 response.bodyOutputStream.write("Ok", "Ok".length); 33 } 34 35 add_task(async function test_cookie_ipv6() { 36 Services.prefs.setIntPref("network.cookie.cookieBehavior", 0); 37 Services.prefs.setBoolPref( 38 "network.cookieJarSettings.unblocked_for_testing", 39 true 40 ); 41 42 httpserver.registerPathHandler("/", cookieSetHandler); 43 httpserver._start(-1, ip); 44 45 var chan = NetUtil.newChannel({ 46 uri: URL, 47 loadUsingSystemPrincipal: true, 48 }); 49 await new Promise(resolve => { 50 chan.asyncOpen(new ChannelListener(resolve)); 51 }); 52 equal(Services.cookies.cookies.length, 1); 53 });