| 'use strict'; |
| require('../common'); |
| const assert = require('assert'); |
| const { validateHeaderName, validateHeaderValue } = require('http'); |
| |
| // Expected static methods |
| isFunc(validateHeaderName, 'validateHeaderName'); |
| isFunc(validateHeaderValue, 'validateHeaderValue'); |
| |
| // Expected to be useful as static methods |
| console.log('validateHeaderName'); |
| // - when used with valid header names - should not throw |
| [ |
| 'user-agent', |
| 'USER-AGENT', |
| 'User-Agent', |
| 'x-forwarded-for', |
| ].forEach((name) => { |
| console.log('does not throw for "%s"', name); |
| validateHeaderName(name); |
| }); |
| |
| // - when used with invalid header names: |
| [ |
| 'איקס-פורוורד-פור', |
| 'x-forwarded-fםr', |
| ].forEach((name) => { |
| console.log('throws for: "%s"', name.slice(0, 50)); |
| assert.throws( |
| () => validateHeaderName(name), |
| { code: 'ERR_INVALID_HTTP_TOKEN' } |
| ); |
| }); |
| |
| console.log('validateHeaderValue'); |
| // - when used with valid header values - should not throw |
| [ |
| ['x-valid', 1], |
| ['x-valid', '1'], |
| ['x-valid', 'string'], |
| ].forEach(([name, value]) => { |
| console.log('does not throw for "%s"', name); |
| validateHeaderValue(name, value); |
| }); |
| |
| // - when used with invalid header values: |
| [ |
| // [header, value, expectedCode] |
| ['x-undefined', undefined, 'ERR_HTTP_INVALID_HEADER_VALUE'], |
| ['x-bad-char', 'לא תקין', 'ERR_INVALID_CHAR'], |
| ].forEach(([name, value, code]) => { |
| console.log('throws %s for: "%s: %s"', code, name, value); |
| assert.throws( |
| () => validateHeaderValue(name, value), |
| { code } |
| ); |
| }); |
| |
| // Misc. |
| function isFunc(v, ttl) { |
| assert.ok(v.constructor === Function, `${ttl} is expected to be a function`); |
| } |