mitm-servers

1.0.3 • Public • Published

Build Status Coverage Status

mitm-servers

Package for high level HTTP server mocking using mitm and express. It allows making complex mock servers and APIs without actually running live servers in your unit tests. It also simplifies the process by separating the mock servers from the actual tests as oppose to libraries like nock and sinon.

This library will not intercept standard HTTP requests or TCP connections to anything other than the servers you define.

Usage

Eace server you create will have to be attached to a specific address. A basic mock will be:

var mitmServers = require('mitm-servers');
var express = require('express');
 
var mockApp = express();
mockApp.use(express.static('test_static_google'));
 
mitmServers.addApp('google.com', mockApp);

Now, whenever you send a request to google.com, you will be routed to the files in the test_static_google folder. For example:

var request = require('supertest');
 
request('google.com')
  .get('/')
  .expect('<html><body>Fake google</body></html>')
;

Functions

addApp(hostname, app)

Starts intercepting requests to the given host and handling those requests with the given express app.

  • hostname: The target hostname as a string. You can also specific a port with :. For example: localhost:1234
  • app: An app you've created with express or connect. Alternatively, you can use any function that handles an http.IncomingMessage and http.ServerResponse

removeApp(hostname)

Removes interceptions from the given host.

  • hostname: The target hostname as a string

removeAllApps()

Removes interceptions for all the hosts. Convenient for teardown functions.

HTTPS

If you need to mock a host that connections to it are sent with HTTPS you'll need to specifiy the SSL port for it (443). For example:

mitmServers.addApp('google.com:443', mockApp);

Dependencies (1)

Dev Dependencies (8)

Package Sidebar

Install

npm i mitm-servers

Weekly Downloads

2

Version

1.0.3

License

ISC

Last publish

Collaborators

  • nice-shot