UNPKG

@mjackson/headers

Version:
83 lines (74 loc) 4.36 kB
import * as assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { canonicalHeaderName } from './header-names.ts'; describe('normalizeHeaderName', () => { it('handles common headers correctly', () => { assert.equal(canonicalHeaderName('content-type'), 'Content-Type'); assert.equal(canonicalHeaderName('content-length'), 'Content-Length'); assert.equal(canonicalHeaderName('user-agent'), 'User-Agent'); assert.equal(canonicalHeaderName('accept'), 'Accept'); }); it('handles special case headers correctly', () => { assert.equal(canonicalHeaderName('etag'), 'ETag'); assert.equal(canonicalHeaderName('www-authenticate'), 'WWW-Authenticate'); assert.equal(canonicalHeaderName('x-forwarded-for'), 'X-Forwarded-For'); assert.equal(canonicalHeaderName('x-xss-protection'), 'X-XSS-Protection'); assert.equal(canonicalHeaderName('te'), 'TE'); assert.equal(canonicalHeaderName('expect-ct'), 'Expect-CT'); }); it('normalizes mixed-case input', () => { assert.equal(canonicalHeaderName('CoNtEnT-TyPe'), 'Content-Type'); assert.equal(canonicalHeaderName('x-FoRwArDeD-fOr'), 'X-Forwarded-For'); }); it('handles single-word headers', () => { assert.equal(canonicalHeaderName('authorization'), 'Authorization'); assert.equal(canonicalHeaderName('host'), 'Host'); }); it('normalizes other common HTTP headers', () => { assert.equal(canonicalHeaderName('accept-charset'), 'Accept-Charset'); assert.equal(canonicalHeaderName('accept-encoding'), 'Accept-Encoding'); assert.equal(canonicalHeaderName('accept-language'), 'Accept-Language'); assert.equal(canonicalHeaderName('cache-control'), 'Cache-Control'); assert.equal(canonicalHeaderName('connection'), 'Connection'); assert.equal(canonicalHeaderName('cookie'), 'Cookie'); assert.equal(canonicalHeaderName('date'), 'Date'); assert.equal(canonicalHeaderName('expect'), 'Expect'); assert.equal(canonicalHeaderName('forwarded'), 'Forwarded'); assert.equal(canonicalHeaderName('from'), 'From'); assert.equal(canonicalHeaderName('if-match'), 'If-Match'); assert.equal(canonicalHeaderName('if-modified-since'), 'If-Modified-Since'); assert.equal(canonicalHeaderName('if-none-match'), 'If-None-Match'); assert.equal(canonicalHeaderName('if-range'), 'If-Range'); assert.equal(canonicalHeaderName('if-unmodified-since'), 'If-Unmodified-Since'); assert.equal(canonicalHeaderName('max-forwards'), 'Max-Forwards'); assert.equal(canonicalHeaderName('origin'), 'Origin'); assert.equal(canonicalHeaderName('pragma'), 'Pragma'); assert.equal(canonicalHeaderName('proxy-authorization'), 'Proxy-Authorization'); assert.equal(canonicalHeaderName('range'), 'Range'); assert.equal(canonicalHeaderName('referer'), 'Referer'); assert.equal(canonicalHeaderName('server'), 'Server'); assert.equal(canonicalHeaderName('transfer-encoding'), 'Transfer-Encoding'); assert.equal(canonicalHeaderName('upgrade'), 'Upgrade'); assert.equal(canonicalHeaderName('via'), 'Via'); assert.equal(canonicalHeaderName('warning'), 'Warning'); assert.equal(canonicalHeaderName('alt-svc'), 'Alt-Svc'); assert.equal(canonicalHeaderName('content-disposition'), 'Content-Disposition'); assert.equal(canonicalHeaderName('content-encoding'), 'Content-Encoding'); assert.equal(canonicalHeaderName('content-language'), 'Content-Language'); assert.equal(canonicalHeaderName('content-location'), 'Content-Location'); assert.equal(canonicalHeaderName('content-range'), 'Content-Range'); assert.equal(canonicalHeaderName('link'), 'Link'); assert.equal(canonicalHeaderName('location'), 'Location'); assert.equal(canonicalHeaderName('retry-after'), 'Retry-After'); assert.equal(canonicalHeaderName('strict-transport-security'), 'Strict-Transport-Security'); assert.equal(canonicalHeaderName('vary'), 'Vary'); }); it('handles custom X- headers', () => { assert.equal(canonicalHeaderName('x-custom-header'), 'X-Custom-Header'); assert.equal(canonicalHeaderName('x-requested-with'), 'X-Requested-With'); }); it('preserves casing for unknown acronyms', () => { assert.equal(canonicalHeaderName('x-csrf-token'), 'X-Csrf-Token'); assert.equal(canonicalHeaderName('x-api-key'), 'X-Api-Key'); }); });