Files
2026-07-13 13:23:39 +08:00

44 lines
1.6 KiB
TypeScript

import { getCookiesFromResponse } from '@crawlee/core';
import type { Dictionary } from '@crawlee/utils';
import { Cookie } from 'tough-cookie';
describe('getCookiesFromResponse', () => {
test('should parse cookies if set-cookie is array', () => {
const headers: Dictionary<string | string[]> = {};
const dummyCookies = [
'CSRF=e8b667; Domain=example.com; Secure',
'id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT',
];
headers['set-cookie'] = dummyCookies;
const cookies = getCookiesFromResponse({ headers });
cookies.forEach((cookie) => {
expect(cookie).toBeInstanceOf(Cookie);
});
expect(dummyCookies[0]).toEqual(cookies[0].toString());
expect(dummyCookies[1]).toEqual(cookies[1].toString());
});
test('should parse cookies if set-cookie is string', () => {
const headers: Dictionary<string | string[]> = {};
const dummyCookie = 'CSRF=e8b667; Domain=example.com; Secure';
headers['set-cookie'] = dummyCookie;
const cookies = getCookiesFromResponse({ headers });
expect(cookies).toHaveLength(1);
expect(dummyCookie).toEqual(cookies[0].toString());
expect(cookies[0]).toBeInstanceOf(Cookie);
});
test('should not throw error on parsing invalid cookie', () => {
const headers: Dictionary<string | string[]> = {};
const dummyCookie = 'totally Invalid Cookie $@$@#$**';
headers['set-cookie'] = dummyCookie;
const cookies = getCookiesFromResponse({ headers });
expect(cookies).toHaveLength(1);
expect(cookies[0]).toBeUndefined();
});
});