UNPKG

@mjackson/headers

Version:
91 lines (86 loc) 3.16 kB
import * as assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { parseParams } from './param-values.ts'; describe('parseParams', () => { it('correctly parses a string of parameters for a Content-Type header', () => { assert.deepEqual(parseParams('text/html; charset=utf-8'), [ ['text/html', undefined], ['charset', 'utf-8'], ]); assert.deepEqual(parseParams('application/json'), [['application/json', undefined]]); assert.deepEqual(parseParams('multipart/form-data; boundary=----WebKitFormBoundaryABC123'), [ ['multipart/form-data', undefined], ['boundary', '----WebKitFormBoundaryABC123'], ]); }); it('correctly parses a string of parameters for a Content-Disposition header', () => { assert.deepEqual(parseParams('form-data; name=fieldName'), [ ['form-data', undefined], ['name', 'fieldName'], ]); assert.deepEqual(parseParams('form-data; name="fieldName"; filename="filename.jpg"'), [ ['form-data', undefined], ['name', 'fieldName'], ['filename', 'filename.jpg'], ]); assert.deepEqual( parseParams("attachment; filename=photo.jpg; filename*=UTF-8''%E7%85%A7%E7%89%87.jpg"), [ ['attachment', undefined], ['filename', 'photo.jpg'], ['filename*', "UTF-8''%E7%85%A7%E7%89%87.jpg"], ], ); assert.deepEqual( parseParams('attachment; filename="photo.jpg"; filename*="UTF-8\'\'%E7%85%A7%E7%89%87.jpg"'), [ ['attachment', undefined], ['filename', 'photo.jpg'], ['filename*', "UTF-8''%E7%85%A7%E7%89%87.jpg"], ], ); }); it('correctly parses a string of parameters for a Set-Cookie header', () => { assert.deepEqual(parseParams('session_id=abc123; Path=/; HttpOnly; Secure'), [ ['session_id', 'abc123'], ['Path', '/'], ['HttpOnly', undefined], ['Secure', undefined], ]); assert.deepEqual(parseParams('user_pref="dark_mode"; Max-Age=31536000; SameSite=Lax'), [ ['user_pref', 'dark_mode'], ['Max-Age', '31536000'], ['SameSite', 'Lax'], ]); assert.deepEqual( parseParams( 'preferences={"font":"Arial","size":"12pt"}; Expires=Fri, 31 Dec 2023 23:59:59 GMT', ), [ ['preferences', '{"font":"Arial","size":"12pt"}'], ['Expires', 'Fri, 31 Dec 2023 23:59:59 GMT'], ], ); assert.deepEqual(parseParams('cart_items="[\\"item1\\",\\"item2\\"]"; Path=/cart; HttpOnly'), [ ['cart_items', '["item1","item2"]'], ['Path', '/cart'], ['HttpOnly', undefined], ]); assert.deepEqual(parseParams('account_type="premium,\\"gold\\""; Domain=example.com; Secure'), [ ['account_type', 'premium,"gold"'], ['Domain', 'example.com'], ['Secure', undefined], ]); assert.deepEqual( parseParams('a2f_token=987654; Path=/2fa; Secure; HttpOnly; SameSite=Strict; Max-Age=300'), [ ['a2f_token', '987654'], ['Path', '/2fa'], ['Secure', undefined], ['HttpOnly', undefined], ['SameSite', 'Strict'], ['Max-Age', '300'], ], ); }); });