5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

postmanのクッキーをクリアする

Posted at

以前にSpringを使ってトークンをイントロスぺクトしてみるという記事を書きました。
これにより自分が書いたAPIをサードパーティーの認証サーバーで保護できます。

また、postmanを使って認証が効いてるかどうかを検証しました。
でもpostmanを使う時にある問題が発生しました、今回の記事はその問題と解決方法について話します。

1 cookiesによる問題

postmanではリクエストするたびにクッキーが生成されます。
これで該当のリクエストに対するキャッシュが生成されます。

ネッドで調査したのですが、このようなクッキーをディスエーブルする設定がそもそもpostmanにはないらしいです。
ちょっとショックでした。

普段ならばクッキーがあっても問題ないし、むしろいろいろキャッシュしてくれて速度改善も期待できます。

しかし、今回は認証のエンドポイントをテストしたいので、クッキーが残り続けると認証の失敗するケースがテストできなくなります。

1.1 postmanでテストを書く

image-20201202213932647.png

こういうふうに成功する場合のテストケースを書きました。
Authorizationタブに正しいトークン情報を入れています。
実行すると該当のテストがパスしました。

image-20201202214105162.png

同じくAuthorization情報を提供しない場合のテストを書きます。
リクエストを送信するとTest Resultsのところに該当のテストがパスしたことを確認しました。

1.2 Collection Runnerで実行してみる

ここまではうれしいですが、

image-20201202214241124.png

コレクションランナーで複数テストを実行してしまうと、
もともの401のテストがなんと200になりました!

2 複数テスト実行失敗の原因

最初はいろいろ調査したけれど、
クッキーが存在することでもともと認証失敗するはずのリクエストが成功するようになったことがわかりました。

もう一度失敗するテストを実行してもずっと200が返されます。

image-20201202214555324.png

MANAGE COOKIESダイアログで確認すると、localhostドメインにJSESSIONIDというクッキーが存在しました。

このクッキーを削除してもう一度認証失敗するテストを実行すると、401が返されました。
やはりクッキーが原因ですね。

3 問題解消

今回はpostmanのスクリプトで自動でクッキーをクリアします。

3.1 スクリプトを有効にする

デフォルトではスクリプトを使ってクッキーを操作できないのでまず有効にします。

image-20201202215005948.png

image-20201202214928685.png

私はlocalhostを利用しているのでlocalhostをwhitelist domainsに追加します。

3.2 スクリプトを書く

const jar = pm.cookies.jar();
jar.clear(pm.request.url.getRaw(), error => {
    console.log(error);
})

image-20201202215621946.png

Pre-request Scriptにクッキーをクリアする。
これは文字通りリクエストする前に実行されるスクリプトになります。

4 修正後結果

image-20201202215736001.png

これでクッキー依存せずに楽しくテストできますね。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?