mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 10:58:56 +00:00
84 lines
2.1 KiB
TypeScript
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;
|
|
}
|