insomnia/packages/insomnia-cookies/__tests__/index.test.js

70 lines
1.9 KiB
JavaScript
Raw Normal View History

2018-06-25 17:42:50 +00:00
const { CookieJar } = require('tough-cookie');
const { jarFromCookies, cookiesFromJar } = require('..');
describe('jarFromCookies()', () => {
it('returns valid cookies', done => {
2018-06-25 17:42:50 +00:00
const jar = jarFromCookies([
{
key: 'foo',
value: 'bar',
domain: 'google.com',
},
2018-06-25 17:42:50 +00:00
]);
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();
2018-06-25 17:42:50 +00:00
const initialCookies = [
{
key: 'bar',
value: 'baz',
domain: 'insomnia.rest',
expires: d,
2018-06-25 17:42:50 +00:00
},
{
// This one will fail to parse, and be skipped
bad: 'cookie',
},
2018-06-25 17:42:50 +00:00
];
2018-06-25 17:42:50 +00:00
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');
2018-10-17 16:42:33 +00:00
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 () => {
2018-06-25 17:42:50 +00:00
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);
});
});