## Modules
This module hosts mock servers for the WSv2 and RESTv2 Bitfinex APIs, and is intended for testing the Bitfinex API libraries.
MockServerREST v2 API server mock
Exposes the same routes as the real API, and maps them to a response table. Multiple potential responses can be defined for endpoints with arguments, with the best match sent to clients on request.
i.e. If the following responses are configured:
orders.tBTCUSD: [42]orders: [41]A GET on /v2/auth/r/orders/tBTCUSD/hist would return [42], but a query
for a different symbol (tETHUSD) would return [41].
events.EventEmitterMock server base class, listens for commands to get/set responses
MockServerActs as a mock for v2 of the Bitfinex websocket API. Responses to available commands are loaded from data/ws2.json and can be modified at runtime. The command API allows for arbitrary packets to be injected into the ws stream.
Responses are of the form [{ packets: [...] }], where mulitple packets are
sent in order. A packet can be a string referencing another response by key.
MockServer](#MockServer)
REST v2 API server mock
Exposes the same routes as the real API, and maps them to a response table.
Multiple potential responses can be defined for endpoints with arguments,
with the best match sent to clients on request.
i.e. If the following responses are configured:
- `orders.tBTCUSD: [42]`
- `orders: [41]`
A `GET` on `/v2/auth/r/orders/tBTCUSD/hist` would return `[42]`, but a query
for a different symbol (`tETHUSD`) would return `[41]`.
**Kind**: global class
**Extends**: [MockServer](#MockServer)
* [MockRESTv2Server](#MockRESTv2Server) ⇐ [MockServer](#MockServer)
* [new MockRESTv2Server([args])](#new_MockRESTv2Server_new)
* _instance_
* [.listen()](#MockRESTv2Server+listen)
* [.close()](#MockRESTv2Server+close) ⇒ Promise
* [.getResponse(key)](#MockServer+getResponse) ⇒ string
* [.setResponse(key, data)](#MockServer+setResponse)
* _static_
* [.keysForRoute(req, routeKey)](#MockRESTv2Server.keysForRoute) ⇒ Array.<string>
### new MockRESTv2Server([args])
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| [args] | object | {} | args |
| [args.apiPort] | number | 9999 | API port number |
| [args.cmdPort] | number | 9998 | command port number |
| [args.listen] | boolean | true | enables auto listen() |
### mockRESTv2Server.listen()
Starts the API server listening on the configured port. This is a no-op if
the server is already up
**Kind**: instance method of [MockRESTv2Server](#MockRESTv2Server)
**Overrides**: [listen](#MockServer+listen)
### mockRESTv2Server.close() ⇒ Promise
Closes the API server if it is running; This is a no-op if it is not.
**Kind**: instance method of [MockRESTv2Server](#MockRESTv2Server)
**Overrides**: [close](#MockServer+close)
**Returns**: Promise - p
### mockRESTv2Server.getResponse(key) ⇒ string
Returns the configured server response for the given key
**Kind**: instance method of [MockRESTv2Server](#MockRESTv2Server)
**Overrides**: [getResponse](#MockServer+getResponse)
**Returns**: string - response - JSON
| Param | Type | Description |
| --- | --- | --- |
| key | string | key |
### mockRESTv2Server.setResponse(key, data)
Sets the provided data as the server response for the given key.
**Kind**: instance method of [MockRESTv2Server](#MockRESTv2Server)
**Overrides**: [setResponse](#MockServer+setResponse)
| Param | Type | Description |
| --- | --- | --- |
| key | string | key |
| data | Array \| object | data |
### MockRESTv2Server.keysForRoute(req, routeKey) ⇒ Array.<string>
**Kind**: static method of [MockRESTv2Server](#MockRESTv2Server)
**Returns**: Array.<string> - keys
| Param | Type | Description |
| --- | --- | --- |
| req | express.Request | request |
| routeKey | string | key |
## MockServer ⇐ events.EventEmitter
Mock server base class, listens for commands to get/set responses
**Kind**: global class
**Extends**: events.EventEmitter
* [MockServer](#MockServer) ⇐ events.EventEmitter
* [new MockServer(args, dataPath)](#new_MockServer_new)
* [.listen()](#MockServer+listen)
* [.close()](#MockServer+close) ⇒ Promise
* [.getResponse(key)](#MockServer+getResponse) ⇒ string
* [.setResponse(key, data)](#MockServer+setResponse)
### new MockServer(args, dataPath)
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| args | object | | args |
| [args.cmdPort] | number | 9998 | port to listen on for HTTP commands |
| dataPath | string | | path to JSON file with responses |
### mockServer.listen()
Starts the HTTP command server listening on the configured port. This is
a no-op if the server is already up.
**Kind**: instance method of [MockServer](#MockServer)
### mockServer.close() ⇒ Promise
Closes the command server if it is running, no-op if not.
**Kind**: instance method of [MockServer](#MockServer)
**Returns**: Promise - p
### mockServer.getResponse(key) ⇒ string
Returns the configured server response for the given key
**Kind**: instance method of [MockServer](#MockServer)
**Returns**: string - response - JSON
| Param | Type | Description |
| --- | --- | --- |
| key | string | key |
### mockServer.setResponse(key, data)
Sets the provided data as the server response for the given key.
**Kind**: instance method of [MockServer](#MockServer)
| Param | Type | Description |
| --- | --- | --- |
| key | string | key |
| data | Array \| object | data |
## MockWSv2Server ⇐ [MockServer](#MockServer)
Acts as a mock for v2 of the Bitfinex websocket API. Responses to available
commands are loaded from data/ws2.json and can be modified at runtime. The
command API allows for arbitrary packets to be injected into the ws stream.
Responses are of the form `[{ packets: [...] }]`, where mulitple packets are
sent in order. A packet can be a string referencing another response by key.
**Kind**: global class
**Extends**: [MockServer](#MockServer)
* [MockWSv2Server](#MockWSv2Server) ⇐ [MockServer](#MockServer)
* [new MockWSv2Server([args])](#new_MockWSv2Server_new)
* [.isOpen()](#MockWSv2Server+isOpen) ⇒ boolean
* [.listen()](#MockWSv2Server+listen)
* [.close()](#MockWSv2Server+close) ⇒ Promise
* [.once(eventName, cb)](#MockWSv2Server+once)
* [.send(packet)](#MockWSv2Server+send)
* [.getResponse(key)](#MockServer+getResponse) ⇒ string
* [.setResponse(key, data)](#MockServer+setResponse)
### new MockWSv2Server([args])
Spawns a new mock WS2 API server. Supported commands:
- POST /send - body is parsed as JSON and sent to all clients
- POST /config - body is parsed as JSON, and valid config keys are saved
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| [args] | object | [] | arguments |
| [args.apiPort] | number | 9997 | which port to listen on for ws clients |
| [args.cmdPort] | number | 9996 | which port to listen on for commands |
| [args.syncOnConnect] | boolean | true | send snapshots to clients on connect |
| [args.authMiddleware=] | function | | handle auth response |
| [args.listen] | boolean | true | if true, listen() is called automatically |
### mockWSv2Server.isOpen() ⇒ boolean
Returns server active status
**Kind**: instance method of [MockWSv2Server](#MockWSv2Server)
**Returns**: boolean - open
### mockWSv2Server.listen()
Starts the API server listening on the configured port. This is a no-op if
the server is already up
**Kind**: instance method of [MockWSv2Server](#MockWSv2Server)
**Overrides**: [listen](#MockServer+listen)
### mockWSv2Server.close() ⇒ Promise
Closes the API server if it is running; This is a no-op if it is not.
**Kind**: instance method of [MockWSv2Server](#MockWSv2Server)
**Overrides**: [close](#MockServer+close)
**Returns**: Promise - p
### mockWSv2Server.once(eventName, cb)
Configures an event handler to be called once when the specified event is
emitted by the API server. No-op if the server is not yet up.
**Kind**: instance method of [MockWSv2Server](#MockWSv2Server)
| Param | Type | Description |
| --- | --- | --- |
| eventName | string | event name |
| cb | function | callback |
### mockWSv2Server.send(packet)
Sends the provided packet to all connected clients
**Kind**: instance method of [MockWSv2Server](#MockWSv2Server)
| Param | Type | Description |
| --- | --- | --- |
| packet | object \| Array | stringifed before being sent |
### mockWSv2Server.getResponse(key) ⇒ string
Returns the configured server response for the given key
**Kind**: instance method of [MockWSv2Server](#MockWSv2Server)
**Overrides**: [getResponse](#MockServer+getResponse)
**Returns**: string - response - JSON
| Param | Type | Description |
| --- | --- | --- |
| key | string | key |
### mockWSv2Server.setResponse(key, data)
Sets the provided data as the server response for the given key.
**Kind**: instance method of [MockWSv2Server](#MockWSv2Server)
**Overrides**: [setResponse](#MockServer+setResponse)
| Param | Type | Description |
| --- | --- | --- |
| key | string | key |
| data | Array \| object | data |