🐓

OpenAPI仕様書を基にPostmanからテストする(VeletaでGo)

2024/10/15に公開

はじめに

弊社では、2024年10月23日から始まる Japan DX Week の会場で、新製品の Veleta をローンチします。

https://www.atpress.ne.jp/news/410896

お披露目の場なので、ミニセミナーと称して、デモをしまくります。
デモのネタをこちらのブログでも公開してまいります。

ということで、
先日の「OpenAPI仕様書からPrismのモックを作る」に続く「VeletaでGo」の第二弾です。

やってみた

準備

「Node.js が動くこと(npm もね)」

以上

デモ環境については、別途、ブログにまとめる(と今回も省略させていただきます)

OpenAPI 仕様書

前回のブログのように、Veleta が生成した OpenAPI 仕様書を使います。
(後ほど、ご紹介する今回作成したプログラムのリポジトリにも格納しました)

openapi-to-postman

ありました。

https://github.com/postmanlabs/openapi-to-postman

こちらについては、他にも記事が見つかると思いますが、簡単です。

$ npm install openapi-to-postmanv2

で、インストールして、

penapi2postmanv2 -s openapi.json -o collection.json -p -O folderStrategy=Tags,includeAuthInfoInExample=false

で、実行できます。この collection.json を Postman にインポートすれば、OK です。

めでたし、めでたし。おしまい。
としたいところなのですが、このままだと、customerId の値が "<number>" になってしまいます。ここは、文字列でなく、 number(より正確には integer)を期待されていますので、書き直さないとテストが実行できません。その下の "<string>" も、こちらはこの文字列で OK なら良いですが、同様です。

もっと楽したい…

postman-collection

ありました。上で出力された Postman Collection 用の SDK です。

https://github.com/postmanlabs/postman-collection

ただ、SDK なので、ご想像のとおり、プログラムを書かないといけません。
ドキュメントもあります…

https://www.postmanlabs.com/postman-collection/

うーん…

veleta-to-postman

作りました。

https://github.com/take0a/veleta-to-postman

index.js だけなので、簡単に説明します。まず、上で紹介した2つのライブラリを読み込みます。

https://github.com/take0a/veleta-to-postman/blob/master/index.js#L4-L7

入出力のファイルは、ご自身のものに置き換えてください。

https://github.com/take0a/veleta-to-postman/blob/master/index.js#L9-L12

そして、リクエストの中の "<string>""<number>" をこの2つの関数で置換します。変数名を渡しますので、変数毎に値を変えることも可能です。

https://github.com/take0a/veleta-to-postman/blob/master/index.js#L14-L34

メインの変換処理を理解したい方は、postman-collection のドキュメントをお読みください。

https://github.com/take0a/veleta-to-postman/blob/master/index.js#L41-L93

関数が長すぎるとお嘆きの方、これ分割しないで、VSCode で編集するとアシストしてくれるので、甘えてしまいました。ガチでやるなら TypeScript なのでしょうが。

おわりに

ということで、リポジトリのスクリプトを実行すると、以下のようになります。

めでたし、めでたし。

こいつをさらに newman に食べさせると、自動テストができたりするみたいです。

https://github.com/postmanlabs/newman

GitHubで編集を提案
株式会社ROBONの技術ブログ

Discussion