apiunit
TypeScript icon, indicating that this package has built-in type declarations

3.2.1 • Public • Published

Apiunit

Apiunit is an awesome api unit testing framework! It allows creation of http requests and responses to create unit tests.

Commands

--input (-i): path to directory containing inputs (/requests is default) --diff (-d): path to directory containing expected output (/responses is default) --parameter (-p): path to the parameter .json file --prefix (-x): prefix of request(input) files to run --cmd (-c): command to be run between scenarios --scn (-s): The scenario or comma separated scenarios to run.

Parameter file example

Parameter files should be JSON format. Here is an example:

{
   "PARAM1":"VALUE1",
   "PARAM2":"VALUE2",
   "settings":{
      "scenarios":{
         "scn1":{
            "PARAM1":"scn1",
            "PARAM2":"scn1"
         },
         "scn2":{
            "PARAM1":"scn2",
            "PARAM2":"scn2"
         }
      },
      "groups":{
         "assets/testSuite":[
            "scn1",
            "scn2"
         ]
      }
   }
}

In this example we are running two scenarios named scn1 and scn2 on the folder(group) of "assets/testSuite". In each scenario, the PARAM1 and PARAM2 variables will be replaced with the values in the scenarios.

Request / Response file examples

Request files should end with .req or .msg extension, and response files should end with .resp extension. Every request should have a matching response with the same name minus extension. Response files can also use regular expressions to match expected responses.

Request files also allow the parameter APIUNIT-RETRY which can be set to any value, but default is 15000ms. APIUNIT-RETRY will retry the request until it matches the associated response or fails within the given timeframe.

Response files also allow the header apiunit-ignore-array-order which use a JSONPath expression to allow arrays to be unordered. Use path1,path2 where the value is a comma separated list of expressions to allow. Any array can be represented with $.., or a more explicit path can be specified. For example, targeting values in only key1 in the following json structure would look like data[*].key1.values.

{
   "data": [
      {
         "key1": {
            "values": [1,2,3]
         },
         "key2": {
            "values": [4,5,6]
         }
      },
      {
         "key1": {
            "values": [1,2,3]
         },
         "key2": {
            "values": [4,5,6]
         }
      }
   ]
}

Example request:

GET ${some-domain-name-from-parameters}/some-path/${some-id-from-previous-test-or-parameters}

Example response:

200
content-type: application/json

{
	"maybe-an-id":".+",
	"some-field":"some-value",
	"another-field":"another-value"
}

Example Execution

To run a simple apiunit task just run the command "node ../node_modules/.bin/apiunit -i specs/requests -d specs/responses -p parameters.json -c "npm run add-some-data-or-something"".

Readme

Keywords

none

Package Sidebar

Install

npm i apiunit

Weekly Downloads

1,298

Version

3.2.1

License

MIT

Unpacked Size

87.3 kB

Total Files

54

Last publish

Collaborators

  • mappies