summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_cookie_partitioned_attribute.js
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/test/unit/test_cookie_partitioned_attribute.js')
-rw-r--r--netwerk/test/unit/test_cookie_partitioned_attribute.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_cookie_partitioned_attribute.js b/netwerk/test/unit/test_cookie_partitioned_attribute.js
new file mode 100644
index 0000000000..f1f3744831
--- /dev/null
+++ b/netwerk/test/unit/test_cookie_partitioned_attribute.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function count_IsPartitioned(bool) {
+ var cookieCountIsPartitioned = 0;
+ Services.cookies.cookies.forEach(cookie => {
+ if (cookie.isPartitioned === bool) {
+ cookieCountIsPartitioned += 1;
+ }
+ });
+ return cookieCountIsPartitioned;
+}
+
+add_task(async function test_IsPartitioned() {
+ let profile = do_get_profile();
+ let dbFile = do_get_cookie_file(profile);
+ Assert.ok(!dbFile.exists());
+
+ let schema13db = new CookieDatabaseConnection(dbFile, 13);
+ let now = Date.now() * 1000; // date in microseconds
+
+ // add some non-partitioned cookies for key
+ let nUnpartitioned = 5;
+ let hostNonPartitioned = "cookie-host-non-partitioned.com";
+ for (let i = 0; i < nUnpartitioned; i++) {
+ let cookie = new Cookie(
+ "cookie-name" + i,
+ "cookie-value" + i,
+ hostNonPartitioned,
+ "/", // path
+ now, // expiry
+ now, // last accessed
+ now, // creation time
+ false, // session
+ false, // secure
+ false, // http-only
+ false, // inBrowserElement
+ {} // OA
+ );
+ schema13db.insertCookie(cookie);
+ }
+
+ // add some partitioned cookies
+ let nPartitioned = 5;
+ let hostPartitioned = "host-partitioned.com";
+ for (let i = 0; i < nPartitioned; i++) {
+ let cookie = new Cookie(
+ "cookie-name" + i,
+ "cookie-value" + i,
+ hostPartitioned,
+ "/", // path
+ now, // expiry
+ now, // last accessed
+ now, // creation time
+ false, // session
+ false, // secure
+ false, // http-only
+ false, // inBrowserElement
+ { partitionKey: "(https,example.com)" }
+ );
+ schema13db.insertCookie(cookie);
+ }
+
+ Assert.equal(do_count_cookies_in_db(schema13db.db), 10);
+
+ // Startup the cookie service and check the cookie counts by OA
+ let cookieCountNonPart =
+ Services.cookies.countCookiesFromHost(hostNonPartitioned); // includes expired cookies
+ Assert.equal(cookieCountNonPart, nUnpartitioned);
+ let cookieCountPart = Services.cookies.getCookiesFromHost(hostPartitioned, {
+ partitionKey: "(https,example.com)",
+ }).length; // includes expired cookies
+ Assert.equal(cookieCountPart, nPartitioned);
+
+ // Startup the cookie service and check the cookie counts by isPartitioned (IsPartitioned())
+ Assert.equal(count_IsPartitioned(false), nUnpartitioned);
+ Assert.equal(count_IsPartitioned(true), nPartitioned);
+
+ schema13db.close();
+});