🏣
PostmanでEnvに設定したOAuth2のトークンを自動で更新する
PostmanのEnv
Postman なんだかんだで進化していて好きなツール。
REST API のE2EテストがGUIベースでできるので手放せない。
Envで環境ごとに設定を切り替えられるのがとても良いのですが、OAuth2のAPIを叩くのに利用しているとき、
access_tokenの期限切れのたびにEnvのトークンを書き換えるのがけっこう手間だった。
なんとか、shellとかで自動化できないかと思ったら、PostmanのTestの機能でできることに気づいた。
Env書き換えられるなんて知らなかった。。
PostmanのTest機能とは
ステータスコードやJsonの中身をチェックし結果を表示してくれる便利な機能。
JavaScriptで記述できる
assertionは、Chaiのライブラリを使っている
下記のようにEnvを書き換えることもできる。
pm.environment.set("access_token", "hoge");
OAuth2のトークン更新方法
つまり、Testしたついでに、Envに設定した access_tokenやrefresh_tokenを書き換えることができる
OAuthの、tokenリフレッシュのエンドポイントアクセス時のテストに、下記のように書くだけ。
testとして、access_tokenと、refresh_tokenの確認をすると同時に、ENVを書き換えています。
pm.test("response has access_token and refresh_token", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('access_token');
pm.expect(jsonData).to.have.property('refresh_token');
pm.environment.set("access_token", jsonData.access_token);
pm.environment.set("refresh_token", jsonData.refresh_token);
});
トークンのリフレッシュは、テストを走らせるたびに1度は行うので、これで手動で書き換えなくて済む。
書き換わるのは、initial value ではなく、current valueの方になる
チーム間共有のために保存したり、exportで書き出す際には反映されないので注意が必要
Discussion