Bug 1377689 - add test for replacing request set cookie with an extension set cookie, r=mixedpuppy draft
authorPeter Snyder <psnyde2@uic.edu>
Tue, 28 Nov 2017 18:00:42 -0600
changeset 704796 2f311f84c5c8b5d265dfc39156573c4d7b60b67e
parent 704775 8aff48ba6e7d3703c858d6d98cc6e7403c20ee98
child 742160 ba1f02fe1bff67e147c1e1dc37248df3385b95e5
push id91248
push userbmo:psnyde2@uic.edu
push dateWed, 29 Nov 2017 00:01:09 +0000
reviewersmixedpuppy
bugs1377689
milestone59.0a1
Bug 1377689 - add test for replacing request set cookie with an extension set cookie, r=mixedpuppy MozReview-Commit-ID: 1UV6JO8GOTC
toolkit/components/extensions/test/mochitest/test_ext_webrequestblocking_set_cookie.html
--- a/toolkit/components/extensions/test/mochitest/test_ext_webrequestblocking_set_cookie.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_webrequestblocking_set_cookie.html
@@ -101,16 +101,45 @@ add_task(async function test_modifying_c
         };
       };
       browser.webRequest.onHeadersReceived.addListener(secondOnHeadersRecievedListiner, requestFilter, extraInfoSpec);
 
       await browser.browsingData.removeCookies({});
       const secondCookieSettingTabDetails = await openWindowAndTab("file_webrequestblocking_set_cookie.html");
       await checkCookies("ext", "req", "third");
       await browser.windows.remove(secondCookieSettingTabDetails.windowId);
+
+      // Fourth, test to make sure that extensions can remove cookies
+      // using onHeadersReceived too, by 1. making a request that
+      // sets a cookie (reqcookie=reqvalue), 2. having the extension remove
+      // that cookie by removing that header, and 3. adding a new cookie
+      // (extcookie=extvalue).
+      browser.webRequest.onHeadersReceived.removeListener(onHeadersReceived);
+      browser.webRequest.onHeadersReceived.removeListener(secondOnHeadersRecievedListiner);
+
+      const thirdOnHeadersRecievedListiner = details => {
+        // Remove the cookie set by the request (reqcookie=reqvalue).
+        const newHeaders = details.responseHeaders.filter(cookie => cookie.name !== "set-cookie");
+
+        // And then add a new cookie in its place (extcookie=extvalue).
+        newHeaders.push({
+          name: "Set-Cookie",
+          value: "extcookie=extvalue",
+        });
+
+        return {
+          responseHeaders: newHeaders,
+        };
+      };
+      browser.webRequest.onHeadersReceived.addListener(thirdOnHeadersRecievedListiner, requestFilter, extraInfoSpec);
+
+      await browser.browsingData.removeCookies({});
+      const thirdCookieSettingTabDetails = await openWindowAndTab("file_webrequestblocking_set_cookie.html");
+      await checkCookies("ext");
+      await browser.windows.remove(thirdCookieSettingTabDetails.windowId);
     }
 
     browser.test.notifyPass("cookie modifying extension");
   }
 
   extension = ExtensionTestUtils.loadExtension({
     manifest: {
       permissions: [