mirror of
https://github.com/zebrajr/express.git
synced 2025-12-06 00:19:48 +01:00
Since v5 relies on node >= 18, this is now possible (since v16, v14.18.0 [^1][^2]). It's functionally irrelevant: 1. It's not required for CJS nor ESM (with a few exceptions [^3]) 2. It has no performance promises However, there are upsides to this approach: 1. It brings clear boundaries to what's a built-in and what's an external dependency 2. It reduces the risk of importing unwanted deps where a built-in is expected 3. It's slightly more interoperable with other JS runtimes that provide node compatibility[^4], albeit only during development. Once imported from npm, built-ins are assumed. [^1]:https://nodejs.org/docs/latest-v22.x/api/modules.html#built-in-modules [^2]:https://github.com/nodejs/node/pull/37246 [^3]:https://nodejs.org/api/modules.html#built-in-modules-with-mandatory-node-prefix [^4]:https://docs.deno.com/runtime/fundamentals/node/#using-node's-built-in-modules
86 lines
2.0 KiB
JavaScript
86 lines
2.0 KiB
JavaScript
|
|
/**
|
|
* Module dependencies.
|
|
* @private
|
|
*/
|
|
|
|
var assert = require('node:assert');
|
|
|
|
/**
|
|
* Module exports.
|
|
* @public
|
|
*/
|
|
|
|
exports.shouldHaveBody = shouldHaveBody
|
|
exports.shouldHaveHeader = shouldHaveHeader
|
|
exports.shouldNotHaveBody = shouldNotHaveBody
|
|
exports.shouldNotHaveHeader = shouldNotHaveHeader;
|
|
exports.shouldSkipQuery = shouldSkipQuery
|
|
|
|
/**
|
|
* Assert that a supertest response has a specific body.
|
|
*
|
|
* @param {Buffer} buf
|
|
* @returns {function}
|
|
*/
|
|
|
|
function shouldHaveBody (buf) {
|
|
return function (res) {
|
|
var body = !Buffer.isBuffer(res.body)
|
|
? Buffer.from(res.text)
|
|
: res.body
|
|
assert.ok(body, 'response has body')
|
|
assert.strictEqual(body.toString('hex'), buf.toString('hex'))
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Assert that a supertest response does have a header.
|
|
*
|
|
* @param {string} header Header name to check
|
|
* @returns {function}
|
|
*/
|
|
|
|
function shouldHaveHeader (header) {
|
|
return function (res) {
|
|
assert.ok((header.toLowerCase() in res.headers), 'should have header ' + header)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Assert that a supertest response does not have a body.
|
|
*
|
|
* @returns {function}
|
|
*/
|
|
|
|
function shouldNotHaveBody () {
|
|
return function (res) {
|
|
assert.ok(res.text === '' || res.text === undefined)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Assert that a supertest response does not have a header.
|
|
*
|
|
* @param {string} header Header name to check
|
|
* @returns {function}
|
|
*/
|
|
function shouldNotHaveHeader(header) {
|
|
return function (res) {
|
|
assert.ok(!(header.toLowerCase() in res.headers), 'should not have header ' + header);
|
|
};
|
|
}
|
|
|
|
function getMajorVersion(versionString) {
|
|
return versionString.split('.')[0];
|
|
}
|
|
|
|
function shouldSkipQuery(versionString) {
|
|
// Skipping HTTP QUERY tests on Node 21, it is reported in http.METHODS on 21.7.2 but not supported
|
|
// update this implementation to run on supported versions of 21 once they exist
|
|
// upstream tracking https://github.com/nodejs/node/issues/51562
|
|
// express tracking issue: https://github.com/expressjs/express/issues/5615
|
|
return Number(getMajorVersion(versionString)) === 21
|
|
}
|
|
|