cloudpack / rorschach
This package is abandoned and no longer maintained.
No replacement package was suggested.
WebAPI Test Library
1.0.12
2017-10-03 06:02 UTC
Requires
- php: >=5.5
- guzzlehttp/guzzle: ^6.2
- symfony/console: ^3.1
- symfony/filesystem: ^3.1
- symfony/finder: ^3.1
- symfony/yaml: ^3.1
- vlucas/phpdotenv: ^2.4
README
Rorschachとは
Install
composer require --dev cloudpack/rorschach
Usage
Basic
./vendor/bin/rorschach inspect
Options
saikou
普通にテストした場合、 finished.
という味気ないメッセージが流れます。
少しでもあなたとの距離を縮める為に最高のオプションを用意いたしました。
--saikou
か -s
をつけて是非お試しください。
bind
Yaml内に、 {{ }}
ブラケットで囲んだ変数を記述することで、外部から値を注入することができる。
注入する方法は2つ
--bind
を使ってJSONにて指定する。(複数指定可能)
--bind='{"env": "prod"}'
--bind='{"env": "prod"}' --bind='{"api-token": "YOURTOKEN"}'
- pre-requestsのbinding構文を使う
bind: api-token: response.data.param
上記のようにすることで、以下のレスポンスの SOME PARAMETER
が api-token
としてbindされる
{ "response": { "data": { "param": "SOME PARAMETER" } } }
file
デフォルトでは、プロジェクトディレクトリの test*.yml
すべてを対象とする。
特定ファイル指定をしたい場合はコマンドライン引数で指定することが可能。
--file='test/test-api.yml'
plugin機能ついて
- pre-requestで実行したAPIのレスポンスをフックして任意のコードを実行し、レスポンスを返すようにできる
- venderディレクトリやtestsディレクトリと同階層に
plugins
という名前でディレクトリを作成し、その中にphpファイルを設置する- 実行時にpluginsディレクトリ内のphpファイルを読み込む為、関数を定義しyamlでは
after-function
というキーを設定することでフックすることができる - 呼び出された関数は Response Object を引数に受け取るので、それを元に関数を作成
- e.g.
- 実行時にpluginsディレクトリ内のphpファイルを読み込む為、関数を定義しyamlでは
$ tree .
.
├── README.md
├── composer.json
├── composer.lock
├── plugins
│ └── test_function.php
├── tests
│ ├── test-beta.yml
....
$ cat plugins/test_function.php
<?php
/**
* toTest()
* @Param $Response
*/
function toTest($Response) {
return json_decode((string)$Response->getBody(), true);
}
$ cat ./tests/test-beta.yml
....
pre-request:
-
url: /login
method: POST
option:
headers:
...
json:
...
bind:
api-token: test
after-function: toTest
...
- この機能を利用することにより、次のようなことが可能になる
- レスポンスが暗号化されているため復号化したり...
- 別の固定値に書き換えたり...
- etc ...
Yaml Sample
base: https://{{ env }}.example.com option: headers: x-api-key: YOUR-SECRET-KEY ContentType: application/json allow_redirects: false pre-request: - url: /auth method: GET option: headers: x-header: HEADER body: name: shinichi password: p@ssw0rd bind: api-token: response.data.param request: - url: /users/1 method: GET option: headers: api-token: {{ api-token }} body: exclude: false expect: code: 200 has: - id - user.name - user.address..tel01 type: id: integer|nullable name: string value: id: 123 name: shinichi - url: /items method: GET expect: code: 302 redirect: https://prod.example.com