test_bug659569.js (1773B)
1 "use strict"; 2 3 const { HttpServer } = ChromeUtils.importESModule( 4 "resource://testing-common/httpd.sys.mjs" 5 ); 6 7 var httpserver = new HttpServer(); 8 9 function setupChannel(suffix) { 10 return NetUtil.newChannel({ 11 uri: "http://localhost:" + httpserver.identity.primaryPort + suffix, 12 loadUsingSystemPrincipal: true, 13 }); 14 } 15 16 function checkValueAndTrigger(request, data) { 17 Assert.equal("Ok", data); 18 httpserver.stop(do_test_finished); 19 } 20 21 function run_test() { 22 // We don't want to have CookieJarSettings blocking this test. 23 Services.prefs.setBoolPref( 24 "network.cookieJarSettings.unblocked_for_testing", 25 true 26 ); 27 28 // Allow all cookies. 29 Services.prefs.setIntPref("network.cookie.cookieBehavior", 0); 30 31 httpserver.registerPathHandler("/redirect1", redirectHandler1); 32 httpserver.registerPathHandler("/redirect2", redirectHandler2); 33 httpserver.start(-1); 34 35 // clear cache 36 evict_cache_entries(); 37 38 // load first time 39 var channel = setupChannel("/redirect1"); 40 channel.asyncOpen(new ChannelListener(checkValueAndTrigger, null)); 41 do_test_pending(); 42 } 43 44 function redirectHandler1(metadata, response) { 45 if (!metadata.hasHeader("Cookie")) { 46 response.setStatusLine(metadata.httpVersion, 302, "Found"); 47 response.setHeader("Cache-Control", "max-age=600", false); 48 response.setHeader("Location", "/redirect2?query", false); 49 response.setHeader("Set-Cookie", "MyCookie=1", false); 50 } else { 51 response.setStatusLine(metadata.httpVersion, 200, "Ok"); 52 response.setHeader("Content-Type", "text/plain"); 53 response.bodyOutputStream.write("Ok", "Ok".length); 54 } 55 } 56 57 function redirectHandler2(metadata, response) { 58 response.setStatusLine(metadata.httpVersion, 302, "Found"); 59 response.setHeader("Location", "/redirect1", false); 60 }