Skip to content

fza/readable-mock-req

Repository files navigation

http.IncomingMessage mock

Build Status Coverage Status Dependency Status devDependency Status

NPM

Yet another http.IncomingMessage mock that is only a readable stream, not a writable stream. It tries to simulate IncomingMessage as close as possible by:

  • validating and setting uppercased method (defaults to GET),
  • ensuring there is a url (defaults to /),
  • populating headers and rawHeaders as expected,
  • populating trailers and rawTrailers after the end event,
  • ending the stream automatically when the method is GET/HEAD/DELETE.

Data can be piped into the request mock by either providing props.source (String, Buffer, Readable Stream), calling _setSource() with any of the aforementioned data types, or by using the usual suspects (_read(), read(), push(), unshift()).

Before passing through data from a source stream, the mock awaits the first read attempt, then periodically pulls as much as it can and as much the mock's buffer can handle, never more. Creating a mock and passing a source stream, then destroying the mock, creating another and setting the same source there without any actual read attempts will not cause any data to be pulled from the source.

Another mode of operation lets the mock consume data from the source stream immediately, effectively draining it. A callback can be used to be informed when all data has been transferred.

readable-mock-req supports Streams3 API via readable-stream ~v1.1.0.

Installation

npm install --save-dev readable-mock-req

API

new MockRequest(method, url, props)

Parameters:
Name Type Argument Default Description
method string <optional>
GET

HTTP method

url url <optional>
/

URL

props object <optional>
{}

Additional properties, like headers or source

Source:

_setSource(src, cb)

Set the source data or stream

Parameters:
Name Type Argument Description
src object | string | Buffer | null

Source, stream or static data

cb function | boolean <optional>

Pass true or a callback fn and all data from the source stream will be pulled upfront, having the Content-Length header set accordingly, if there is no such header already. Signature: fn(err, length), where err is any potential Error as emitted by the source stream. length is provided in any case and shows how much data has been read.

Source:

setTimeout()

Source:

generated with docme

Contributing

Take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt test.

License

Copyright (c) 2015 Felix Zandanel
Licensed under the MIT license.

See LICENSE for more info.

About

Yet another http.IncomingMessage mock (readable stream only)

Resources

License

Stars

Watchers

Forks

Packages

No packages published