システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る。主に自分向けのメモ。EE関連の情報が少なく自分自身がそういう情報があったら良いなぁということで他の人の参考になれば幸い

KarateのfeatureをOpenAPIから作成(ZenWave Karate IDE)

はじめに

OpenAPIの定義をDSL的に使って、Karateのfeatureを自動生成するVSCodeの拡張です。

基本的な使い方は拡張機能のサイトにある動画を見るのが分かりやすいので割愛します。

marketplace.visualstudio.com

ここでは自動生成された資産についての補足です。

認可トークンのファイルの出力場所

OpenAPIで認可トークンありにすると、その辺りの資産も自動生成してくれます。
karate-auth.js に認可トークンに関する共通の設定を記述できます。

ただ、このファイルの生成先のディレクトリがプロジェクトのルートでした。
これだとfeatureからのパス指定位置としてふさわしくないため、テストコードのルートとなるディレクトリにファイルを移動させました。
デフォルトはベーシック認証になっているみたいです。
今回は認可トークンをつかったロジックなどは実装していないのでコメントアウトしました。

自動生成で出来なかったところの手直し

通常のRESTfulな仕様の範囲は特にエラーにならなかったです。
ただファイルのアップロードだけは multi-part で指定してくれなかったので修正をしました*1

  And multipart file file = {read:'test-data/FileToUpload1.txt', filename:'FileToUpload1.txt',Content-type:'mulitpart/form-data'}

Code

vermeer.hatenablog.jp

で作成したEEのアプリをCargoで起動して、karateのテストを動かします。
手順は、下記のリポジトリのREADMEに記載しているので、そちらを参考にしてください。

experimentation/karate-01-openapi at openapi · vermeerlab/experimentation · GitHub

さいごに

OpenAPIをちゃんとつくると、それをDSLとして色々とできるというのは非常に良いですね。
テストコードの構造化しているところとか、よく見るサンプルよりも一歩踏み込んだ感じなので色々と学びも多かったように思います。

*1:通常のリクエストボディと同じ扱いをされる