mirror of
https://github.com/zebrajr/express.git
synced 2025-12-06 12:19:51 +01:00
* skip QUERY tests for Node 21 only, still not supported QUERY support has now landed in Node 22.2.0, but is still not supported in 21.7.3 QUERY showed up in http.METHODS in 21.7.2. Only Node versions after that will attempt to run tests for it, based on the way we dynamically test members of the http.METHODS array from Node * update CI to run on 21.7 and 22.2
87 lines
2.0 KiB
JavaScript
87 lines
2.0 KiB
JavaScript
|
|
/**
|
|
* Module dependencies.
|
|
* @private
|
|
*/
|
|
|
|
var assert = require('assert');
|
|
var Buffer = require('safe-buffer').Buffer
|
|
|
|
/**
|
|
* 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
|
|
}
|
|
|