Utility for handling expectations setup, teardown and other action on MockServer instance.
- Node.js - developed and tested on v20.10.0
-
run
npm i -g @bednarik_radek/mockserver-cli. Global installation is recommended for usage of the library. So it will be accessible from any directory. -
run
npx expectations -hto see the list of available commands. Will display something like this:
npx expectations -h
# output
Usage: expectations [options] [command]
Options:
-V, --version output the version number
-c, --config <path> set config path. defaults to './mockserver.config.json' (default: "./mockserver.config.json")
--concurrency <number> set number of concurrent requests. defaults to '10' (default: "10")
-h, --help display help for command
Commands:
set <paths...> send prepared expectations up to the mockserver instance
clear <paths...> clear all expectations from the mockserver instance
reset resets all expectations and request logs in the running mockserver instance
get-active [options] <paths...> get all active expectations from the mockserver instance
help [command] display help for command-
clone the repository
-
run
npm ito install dependencies
npx expectations -c ./examples/mockserver.config.json set ./examples/expectations/expectation1.jsonExample:
{
"host": "localhost",
"port": 5999,
"protocol": "<http|https>"
}File can be placed anywhere. If -c or --config option is not provided, program will look for mockserver.config.json in the current directory.
Concurrency of promises sets, how many promises many promises will be held in the queue at max to resolve. Defaults to 10.
This limiting is applied for both set, clear and get-active commands.
-
setis limited for how many expectations requests to mock-server can be sent at once. -
clearis limited for how manyexpectations.jsonfiles can be processed at once. If the expectations array in the file contains multiple expectations, they will be processed one by one sequentially. -
get-activeis limited for how many requests to mock-server regarding active expectations for the given expectation of the.expectations.jsonfile can be sent at once.
Uses p-queue library under the hood.
npx expectations --concurrency=5 set ./examples/expectations/expectation1.jsonExpectations definitions are stored in json files. These files can be placed anywhere.
-
file name must end with
.expectations.json -
file must contain array of expectations objects
-
see Mockserver documentation for more details about expectations
Example:
[
{
"httpRequest": {
"method": "GET",
"path": "/api/test/endpoint/v1"
},
"httpResponse": {
"statusCode": 200,
"body": "Hello World!"
}
},
{
"httpRequest": {
"method": "GET",
"path": "/api/test/endpoint/v2"
},
"httpResponse": {
"statusCode": 200,
"body": {
"message": "Hello World!",
"flag": "test"
}
}
}
]npx expectations -c=some/filepath/mockserver.config.json --concurrency=50 set ./examples/expectations/expectation1.jsonnpx expectations set ./examples/expectations/expectation1.json ./examples/expectations/expectation2.jsonnpx expectations set ./examples/expectationsnpx expectations set ./examples/expectations ./examples/expectations2npx expectations clear ./examples/expectations/expectation1.jsonnpx expectations clear ./examples/expectations/expectation1.json ./examples/expectations/expectation2.jsonnpx expectations clear ./examples/expectationsnpx expectations clear ./examples/expectations ./examples/expectations2Resets all expectations and logs in the running mockserver instance.
npx expectations resetYou have to provide the path(s) to the directory or file containing the expectations.
You may provide option -s or --save to save the active expectations to the .json file.
Otherwise, the expectations are only logged to the console with trace log level.
# retrieves active expectations from the mockserver instance and does NOT save them to the file.
npx expectations -c some/path/to/mockserver.config.json get-active ./examples/expectations/expectation1.json
# retrieves active expectations from the mockserver instance and saves them to the file.
npx expectations -c some/path/to/mockserver.config.json get-active examples/expectations/expectation1.json -s retrieved-active-expectations.jsonLogging is done via pino.js library. Currently, there is only the possibility to log to the console.
These are done via ENV variables.
-
LOG_LEVEL- set log level. Defaults toinfoif not provided. -
LOG_ENABLED- set log enabled. Defaults totrueif not provided.