🏣

PostmanでEnvに設定したOAuth2のトークンを自動で更新する

2023/05/08に公開

PostmanのEnv

Postman なんだかんだで進化していて好きなツール。
REST API のE2EテストがGUIベースでできるので手放せない。

Envで環境ごとに設定を切り替えられるのがとても良いのですが、OAuth2のAPIを叩くのに利用しているとき、
access_tokenの期限切れのたびにEnvのトークンを書き換えるのがけっこう手間だった。
なんとか、shellとかで自動化できないかと思ったら、PostmanのTestの機能でできることに気づいた。
Env書き換えられるなんて知らなかった。。

PostmanのTest機能とは

https://learning.postman.com/docs/writing-scripts/test-scripts/
Postmanで、リクエストを行った際にテストをしてくれる
ステータスコードやJsonの中身をチェックし結果を表示してくれる便利な機能。

JavaScriptで記述できる
assertionは、Chaiのライブラリを使っている
https://www.chaijs.com/api/bdd/

下記のように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で書き出す際には反映されないので注意が必要

GitHubで編集を提案

Discussion