Files
bun.sh/test/js/third_party/express/support/utils.ts

84 lines
2.1 KiB
TypeScript

/**
* Module dependencies.
* @private
*/
var assert = require("node:assert");
var { METHODS } = require("node:http");
/**
* Module exports.
* @public
*/
exports.shouldHaveBody = shouldHaveBody;
exports.shouldHaveHeader = shouldHaveHeader;
exports.shouldNotHaveBody = shouldNotHaveBody;
exports.shouldNotHaveHeader = shouldNotHaveHeader;
exports.shouldSkipQuery = shouldSkipQuery;
exports.methods = METHODS.map(method => method.toLowerCase()); // from lib/utils.js
/**
* 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;
}