mocknode
v1.2.3
Published
A configurable mock server with an intuitive configuration management interface and a http api
Downloads
77
Maintainers
Readme
Mock Node
A configurable mock server with an intuitive configuration management interface and a http api.
Mocknode allows you to mock http endpoints quickly and easily. The simple management interface lets you configure how the server responds to different endpoints:
- Proxy - Proxies the request to an existing service
- Stub - A static response which you can manage in the 'manage stubs' link of the route
- Dynamic Stub - Responds with a configured stub if the condition defined evaluates to true
The interface allows every one working on the team to have clear visibility on what routes are being used by an application and all possible responses of the route. Thus making stubs to act as proper documented examples.
You can use mocknode to write integration tests for your application. Dynamic stubs can be used to define strategies which can be asserted in your test scripts. You can have even more granular control on the integration tests by using the http api exposed by mocknode. Use the API to toggle the handle for a route, change the stub which is being responded, etc.
A running instance on heroku
https://mocknode.herokuapp.com/mocknode/ please go easy on this :)
Installing and Runing the server
Standalone
- clone/download this repository
- make sure you have node and npm installed
- run npm install to download required packages
- node server.js to run the server
npm global install
- npm install -g mocknode
- run mocknode to start the server
npm local install
- npm install --save mocknode
- add an npm script entry in the package.json "mocknode": "mocknode"
- run npm run mocknode to start the server
and open https://localhost:3000/mocknode/ in your browser to configure mocknode
Mocknode has a downstream dependency on buffertools which executes a node-gyp during install. A common problem with node-gyp exists nodejs/node-gyp#809. If there are node-gyp errors during 'npm install' an easy fix is to remove the gyp installed on your OS.
The Port
The order of preference for the port on which mocknode runs is:
env variable of process > port option passed > 3000
mocknode --port 4000 starts the server on port 4000, unless a PORT env variable exists for the process.
Mocknode configuration
Open https://localhost:3000/mocknode/ in your browser to configure mocknode
All your changes are saved in the config.json file and the stubs folder. This ensures all your changes are saved if you restart mocknode. You can easily backup all of your configuration by making a copy of these files.
Installation directory
If you have installed mocknode as a global npm package
mocknode --location prints the installation path of mocknode.
Logs
mocknode stores logs in the logs/ folder of the installation directory
- access.log - logs all requests to mocknode
- change.log - logs all configuration change requests made to mocknode
Export and Import config
The config.json file and stubs folder hold all the configuration of mocknode.
mocknode --export creates a mocknode-config.tar file which can be used to setup another instance of mocknode. mocknode --import [file_path] imports a config.tar file to configure mocknode.
HTTP API
Mocknode exposes a series of endpoints which can help you integrate it with your code - [ test scripts for example ]
| enpoint | method | params | | :------------------------------ | --------:| :------------: | | /mocknode/api/config | GET | - | | /mocknode/api/stubconfig | GET | - | | /mocknode/api/getstub | GET | name | | /mocknode/api/modifyroute | POST | route config | | /mocknode/api/deleteroute | GET | route | | /mocknode/api/modifystub | POST | stub config | | /mocknode/api/deletestub | GET | name | | /mocknode/api/modifydynamicstub | POST | stub config | | /mocknode/api/deletedynamicstub | GET | name |
mocknode interface uses the above endpoints to interact with the server, inspect the network of the browser to better understand the parameters used in each api.
Troubleshooting
The config files and the stubs folder mentioned above have all the information regarding your configuration.
License
MIT