1'use strict'; 2require('../common'); 3const assert = require('assert'); 4const { validateHeaderName, validateHeaderValue } = require('http'); 5 6// Expected static methods 7isFunc(validateHeaderName, 'validateHeaderName'); 8isFunc(validateHeaderValue, 'validateHeaderValue'); 9 10// Expected to be useful as static methods 11console.log('validateHeaderName'); 12// - when used with valid header names - should not throw 13[ 14 'user-agent', 15 'USER-AGENT', 16 'User-Agent', 17 'x-forwarded-for', 18].forEach((name) => { 19 console.log('does not throw for "%s"', name); 20 validateHeaderName(name); 21}); 22 23// - when used with invalid header names: 24[ 25 'איקס-פורוורד-פור', 26 'x-forwarded-fםr', 27].forEach((name) => { 28 console.log('throws for: "%s"', name.slice(0, 50)); 29 assert.throws( 30 () => validateHeaderName(name), 31 { code: 'ERR_INVALID_HTTP_TOKEN' } 32 ); 33}); 34 35console.log('validateHeaderValue'); 36// - when used with valid header values - should not throw 37[ 38 ['x-valid', 1], 39 ['x-valid', '1'], 40 ['x-valid', 'string'], 41].forEach(([name, value]) => { 42 console.log('does not throw for "%s"', name); 43 validateHeaderValue(name, value); 44}); 45 46// - when used with invalid header values: 47[ 48 // [header, value, expectedCode] 49 ['x-undefined', undefined, 'ERR_HTTP_INVALID_HEADER_VALUE'], 50 ['x-bad-char', 'לא תקין', 'ERR_INVALID_CHAR'], 51].forEach(([name, value, code]) => { 52 console.log('throws %s for: "%s: %s"', code, name, value); 53 assert.throws( 54 () => validateHeaderValue(name, value), 55 { code } 56 ); 57}); 58 59// Misc. 60function isFunc(v, ttl) { 61 assert.ok(v.constructor === Function, `${ttl} is expected to be a function`); 62} 63