Mitm.js intercepts Http.request and Https.request calls and emits a request event. The event listener receives a server-side Http.IncomingMessage (req) and Http.ServerResponse (res).
Note: HTTPS requests are currently morphed into HTTP requests to avoid certificate management.
Note: Custom HTTP methods are not supported out-of-the-box because the underlying Node.js HTTP parser throws errors for unsupported methods.
// Asserting on a request
mitm.on("request", function(req, res) {
req.headers.authorization.must.equal("OAuth DEADBEEF")
})
Http.get("http://example.org")
// Responding to a request
mitm.on("request", function(req, res) {
res.statusCode = 402
res.end("Pay up, sugar!")
})
Http.get("http://example.org", function(res) {
res.setEncoding("utf8")
res.statusCode // => 402
res.on("data", console.log) // => "Pay up, sugar!"
})