-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(node:http) Export
validateHeaderName
and validateHeaderValue
…
…functions (#22616) Modify `_http_outgoing.ts` to support the extended signature of `validateHeaderName()` used since node v19.5.0/v18.14.0 by adding the `label` parameter. (see: https://nodejs.org/api/http.html#httpvalidateheadernamename-label) Making both validation functions accessible as public exports of `node:http` Fixes: #22614
- Loading branch information
1 parent
df69c2b
commit 6057ddd
Showing
5 changed files
with
94 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
69 changes: 69 additions & 0 deletions
69
tests/node_compat/test/parallel/test-http-header-validators.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
// deno-fmt-ignore-file | ||
// deno-lint-ignore-file | ||
|
||
// Copyright Joyent and Node contributors. All rights reserved. MIT license. | ||
// Taken from Node 18.12.1 | ||
// This file is automatically generated by `tools/node_compat/setup.ts`. Do not modify this file manually. | ||
|
||
'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`); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters