diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fb1426f..d530157a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ All notable changes to this project will be documented in this file. ### Minor Changes - Added parameter checking to setCookie so as to error out when no URL was passed in +## X.Y.Z + +### Minor Changes +- Added loose mode to the serialized options. Now a serialized cookie jar with loose mode enabled will honor that flag when deserialized. + ## 4.0.0 ### Breaking Changes (Major Version) diff --git a/lib/cookie.js b/lib/cookie.js index f7c491e7..dec8b066 100644 --- a/lib/cookie.js +++ b/lib/cookie.js @@ -1447,6 +1447,7 @@ class CookieJar { // CookieJar configuration: rejectPublicSuffixes: !!this.rejectPublicSuffixes, + enableLooseMode: !!this.enableLooseMode, // this gets filled from getAllCookies: cookies: [] @@ -1615,7 +1616,10 @@ class CookieJar { serialized = strOrObj; } - const jar = new CookieJar(store, serialized.rejectPublicSuffixes); + const jar = new CookieJar(store, { + rejectPublicSuffixes: serialized.rejectPublicSuffixes, + looseMode: serialized.enableLooseMode + }); jar._importCookies(serialized, err => { if (err) { return cb(err); @@ -1627,7 +1631,10 @@ class CookieJar { static deserializeSync(strOrObj, store) { const serialized = typeof strOrObj === "string" ? JSON.parse(strOrObj) : strOrObj; - const jar = new CookieJar(store, serialized.rejectPublicSuffixes); + const jar = new CookieJar(store, { + rejectPublicSuffixes: serialized.rejectPublicSuffixes, + looseMode: serialized.enableLooseMode + }); // catch this mistake early: if (!jar.store.synchronous) { diff --git a/test/cookie_jar_test.js b/test/cookie_jar_test.js index 8b8af0a5..3155a05c 100644 --- a/test/cookie_jar_test.js +++ b/test/cookie_jar_test.js @@ -543,6 +543,19 @@ vows assert.strictEqual(cookies[0].key, ""); assert.strictEqual(cookies[0].value, "FooBar"); } + }, + "Loose Mode Cloned": { + topic: function() { + const cj = new CookieJar(null, { looseMode: true }); + return CookieJar.fromJSON(cj.toJSON()); + }, + "parses loose cookies from serialized cookie jar": function(cj) { + cj.setCookieSync("FooBar", "http://www.foonet.net", {}); + const cookies = cj.getCookiesSync("http://www.foonet.net"); + assert.strictEqual(cookies.length, 1); + assert.strictEqual(cookies[0].key, ""); + assert.strictEqual(cookies[0].value, "FooBar"); + } } }) .addBatch({