should-http: HTTP Assertions for should.js

0.1.1 · abandoned · verified Tue Apr 21

should-http extends the `should.js` assertion library with specific methods for validating Node.js HTTP `IncomingMessage` objects. Primarily used for testing HTTP requests and responses, it enables fluent assertions on status codes, headers (e.g., `Content-Length`), and content types (e.g., `application/json`, `text/html`). Currently at version 0.1.1, this package appears to be abandoned, with no active development or maintenance. Its approach of patching the global `should` instance, rather than exporting specific utilities, ties it closely to older `should.js` usage patterns and makes it less suitable for modern module development (ESM) where global side-effects are generally avoided. It focuses specifically on the standard Node.js `http` module's request and response objects, distinguishing it from broader HTTP client assertion libraries.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates how to initialize `should-http` and use its core assertions (status, header, json, html) on a mock HTTP response object.

const should = require('should');
require('should-http');

// Simulate an HTTP response object
const mockResponse = {
  statusCode: 200,
  headers: {
    'content-type': 'application/json; charset=utf-8',
    'content-length': '123'
  },
  body: '{ "key": "value" }'
};

// Assertions using should-http
try {
  mockResponse.should.have.status(200);
  console.log('✔ Status code is 200');

  mockResponse.should.have.header('content-length');
  console.log('✔ Has content-length header');

  mockResponse.should.have.header('Content-Length', '123');
  console.log('✔ Content-Length header matches value');

  mockResponse.should.be.json();
  console.log('✔ Content-Type is application/json');

  // Example of a failing assertion (uncomment to see it fail)
  // mockResponse.should.have.status(404);

} catch (e) {
  console.error('Assertion failed:', e.message);
}

// Example for .html (if content-type were different)
const htmlResponse = {
    statusCode: 200,
    headers: {
        'content-type': 'text/html; charset=utf-8'
    }
};

try {
    htmlResponse.should.be.html();
    console.log('✔ Content-Type is text/html');
} catch (e) {
    console.error('HTML assertion failed:', e.message);
}

view raw JSON →