DefinitelyTyped/types/set-cookie-parser/set-cookie-parser-tests.ts
Herman J. Radtke III 997bd7259f set-cookie-parser: add CookieMap support (#36160)
Allow the parser result to return a CookieMap type.
2019-06-16 19:52:53 -07:00

110 lines
4.5 KiB
TypeScript

import * as assert from "assert";
import * as http from "http";
import setCookie = require("set-cookie-parser");
// Call parse function on imported object
var input = "foo=bar;";
var cookies = setCookie.parse(input);
assert.equal(cookies.length, 1);
assert.equal(cookies[0].name, "foo");
assert.equal(cookies[0].value, "bar");
// Required properties only test
var requiredOnly = "foo=bar;";
cookies = setCookie(requiredOnly);
assert.equal(cookies.length, 1);
assert.equal(cookies[0].name, "foo");
assert.equal(cookies[0].value, "bar");
// Optional properties included test
var optionalIncluded = "foo=bar; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure";
cookies = setCookie(optionalIncluded);
assert.equal(cookies.length, 1);
assert.equal(cookies[0].name, "foo");
assert.equal(cookies[0].value, "bar");
assert.equal(cookies[0].domain, ".example.com");
assert.equal(cookies[0].path, "/");
assert.deepEqual(cookies[0].expires, new Date('Tue Jul 01 2025 06:01:11 GMT-0400 (EDT)'));
assert.equal(cookies[0].maxAge, 1000);
assert.equal(cookies[0].httpOnly, true);
assert.equal(cookies[0].secure, true);
// Array of strings test
var arrayOfCookies = ["bam=baz", "foo=bar"];
cookies = setCookie(arrayOfCookies);
assert.equal(cookies.length, 2);
assert.equal(cookies[0].name, "bam");
assert.equal(cookies[0].value, "baz");
assert.equal(cookies[1].name, "foo");
assert.equal(cookies[1].value, "bar");
// HTTP response message test
var message = {} as http.IncomingMessage;
message.headers = { "set-cookie": ["bam=baz", "foo=bar"] };
cookies = setCookie(message);
assert.equal(cookies.length, 2);
assert.equal(cookies[0].name, "bam");
assert.equal(cookies[0].value, "baz");
assert.equal(cookies[1].name, "foo");
assert.equal(cookies[1].value, "bar");
// Create new cookie with only required properties
var requiredOnlyCookie: setCookie.Cookie = {
name: "Foo",
value: "Bar"
}
// Create new cookie with all properties included optional ones
var optionalIncludedCookie: setCookie.Cookie = {
name: "Bam",
value: "Baz",
domain: ".example.com",
path: "/",
expires: new Date("Tue Jul 01 2025 06:01:11 GMT-0400 (EDT)"),
maxAge: 1000,
httpOnly: true,
secure: true
};
var cookiesString = setCookie.splitCookiesString(null)
assert.deepStrictEqual(cookiesString, [])
cookiesString = setCookie.splitCookiesString([])
assert.deepStrictEqual(cookiesString, [])
cookiesString = setCookie.splitCookiesString([
'foo=bar; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure',
'baz=buz; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure',
])
assert.deepStrictEqual(cookiesString, [
'foo=bar; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure',
'baz=buz; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure',
])
cookiesString = setCookie.splitCookiesString(
'foo=bar; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure, baz=buz; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure',
)
assert.deepStrictEqual(cookiesString, [
'foo=bar; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure',
'baz=buz; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 2025 10:01:11 GMT; HttpOnly; Secure',
])
// Use decodeValues=false option
var notDecodedValueCookies = setCookie.parse('user=%D0%98%D0%BB%D1%8C%D1%8F%20%D0%97%D0%B0%D0%B9%D1%86%D0%B5%D0%B2; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 3000 10:01:11 GMT; HttpOnly; Secure', { decodeValues: false });
assert.equal(notDecodedValueCookies[0].value, '%D0%98%D0%BB%D1%8C%D1%8F%20%D0%97%D0%B0%D0%B9%D1%86%D0%B5%D0%B2');
var decodedValueCookies = setCookie.parse('user=%D0%98%D0%BB%D1%8C%D1%8F%20%D0%97%D0%B0%D0%B9%D1%86%D0%B5%D0%B2; Max-Age=1000; Domain=.example.com; Path=/; Expires=Tue, 01 Jul 3000 10:01:11 GMT; HttpOnly; Secure', { decodeValues: true });
assert.equal(decodedValueCookies[0].value, 'Илья Зайцев');
// Use map=true option
var expectedCookiesMap: setCookie.CookieMap = {
foo: {
name: 'foo',
value: 'bar',
maxAge: 1000,
domain: '.example.com',
}
};
var cookiesMap = setCookie.parse('foo=bar; Max-Age=1000; Domain=.example.com;', { map: true });
assert.deepStrictEqual(cookiesMap, expectedCookiesMap);