• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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