s3cc0/restful-api-test-engine

This is a simple API Test-Engine. With simple JSON files you can run tests for all your RESTful API's.

v1.0-stable 2015-12-11 13:26 UTC

This package is not auto-updated.

Last update: 2024-04-13 14:34:36 UTC


README

This bundle provides a class for a simple API Test. The tests run on the terminal using run.php.

PHP API test engine screenshot

How to use?

In the folder you will find run.php. Run this file with given params to setup the test engine.

If you have written some tests. Then you can execute them with:

$ php run.php -u <api url> -t <test dir>  -m <mock dir> -n <number of rounds> -c <concurrency level>

Example:

php run.php -u "http://httpbin.org" -t "jsons/"  -m "mocks/" -n 10 -c 2

How to write tests?

First of all, all tests must contain in the same folder, sub folder are ignored.

###Create a simple test###

A test can contain one or more subtests.

{
	"tests" : [
		{
			"name" : "Try to login with a wrong data",
			"path" : "/login",
			"method" : "POST",
			"request_params" : {
				"email" : "empty@me.com",
				"password" : "12345678"
			},
			"validation" : {
				"http_code" : 406,
				"response_params" : {
					"code" : 406,
					"message" : "$nn"
				}
			}
		},
		...
	]
}

Options

  • $nn - means should be "not null"
  • $eq - means check variable 1 of a response is equal to variable 2
  • .$c - will return the count of the keypath (used for arrays)
  • $ia - means check variable is an array
  • more options in the next version ...

###Save variables###

To reuse output or created data you can save them to the globals (note: use unique keys!). Keypath should be a available path inside the request response.

"save_global" : [
	{ "key" : "account_id", "keypath" : "account.id" }
]

To reuse the save variable you can do it easy with {$account_id}

"name" : "Delete account with id {$account_id}",
"path" : "/accounts/{$account_id}",

###Using mocks###

If you have create mocks, you can easy load them by adding a string to the request_params. This example will load the mock account.json.

"request_params" : "account",

You can also use mocks to validate the response values. For this add mock inside the validation.

"validation" : {
	"http_code" : 200,
	"mock" : "account"
},

###Extended Header###

You can extend and overwrite the reuqest header using the header in the test set. The header variables will also listing to the global saved variables.

"header" : {
    "Authorization" : "Bearer {$access_token}" 
}