const { CookieJar } = require('tough-cookie'); const { cookieToString, jarFromCookies, cookiesFromJar } = require('..'); describe('jarFromCookies()', () => { it('returns valid cookies', done => { const jar = jarFromCookies([ { key: 'foo', value: 'bar', domain: 'google.com' } ]); jar.store.getAllCookies((err, cookies) => { expect(err).toBeNull(); expect(cookies[0].domain).toEqual('google.com'); expect(cookies[0].key).toEqual('foo'); expect(cookies[0].value).toEqual('bar'); expect(cookies[0].creation instanceof Date).toEqual(true); expect(cookies[0].expires).toEqual('Infinity'); done(); }); }); it('handles malformed JSON', () => { const jar = jarFromCookies('not a jar'); expect(jar.constructor.name).toBe('CookieJar'); }); }); describe('cookiesFromJar()', () => { it('returns valid jar', async () => { const d = new Date(); const initialCookies = [ { key: 'bar', value: 'baz', domain: 'insomnia.rest', expires: d }, { // This one will fail to parse, and be skipped bad: 'cookie' } ]; const jar = CookieJar.fromJSON({ cookies: initialCookies }); const cookies = await cookiesFromJar(jar); expect(cookies[0].domain).toBe('insomnia.rest'); expect(cookies[0].key).toBe('bar'); expect(cookies[0].value).toBe('baz'); expect(cookies[0].creation).toMatch( /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/ ); expect(cookies[0].expires).toEqual(d.toISOString()); }); it('handles bad jar', async () => { const jar = CookieJar.fromJSON({ cookies: [] }); // MemoryStore never actually throws errors, so lets mock the // function to force it to this time. jar.store.getAllCookies = cb => cb(new Error('Dummy Error')); const cookies = await cookiesFromJar(jar); // Cookies failed to p expect(cookies.length).toBe(0); }); });