Home / File/ utils.js — express Source File

utils.js — express Source File

Architecture documentation for utils.js, a javascript file in the express codebase.

Entity Profile

Relationship Graph

Source Code


/**
 * Module dependencies.
 * @private
 */

var assert = require('node:assert');
const { Buffer } = require('node: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 below Node 22, QUERY wasn't fully supported by Node until 22
  // we could 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)) < 22
}

Domain

Subdomains

Frequently Asked Questions

What does utils.js do?
utils.js is a source file in the express codebase, written in javascript. It belongs to the ExpressCore domain, MiddlewarePipeline subdomain.
What functions are defined in utils.js?
utils.js defines 6 function(s): getMajorVersion, shouldHaveBody, shouldHaveHeader, shouldNotHaveBody, shouldNotHaveHeader, shouldSkipQuery.
Where is utils.js in the architecture?
utils.js is located at test/support/utils.js (domain: ExpressCore, subdomain: MiddlewarePipeline, directory: test/support).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free