はじめに
テストは見るべきパターンこそ多いですが、期待値は複数のケースで同じものが現れることも多いです。
そして僕の眼球や脳はポンコツなので、似たようなパターンを手作業で確認していると絶対にミスをやらかすという自負があります。
したがって、似たようなパターンのテストはプログラムに任せた方が楽で安全で確実です。
なお、今回はトラブルシュートの記事です。
collection作成やエクスポート、Newmanのコマンドについては、既に分かりやすい記事がいくつもあるのでそちらを参照ください。
一応説明しておきますと、PostmanはAPIを気軽に叩けるツール、NewmanはCLI版Postmanです。
1. 環境変数が読み込まれない
解決策:INITIAL VALUE
に値を入れてエクスポートしましょう。
Postmanでは問題なく動いていた APIが、newman run
ではエラーで全滅する事象にぶつかりました。
出力をよーく見てみると、環境変数で切り替えるようにしていたドメイン部分が消えている‥‥?
そもそものURLが壊れているなら疎通も何もあったもんじゃないです。
とりあえず環境変数持ってるjsonファイルをbat
してみると、value
のところが見事に全部空でした。何もないヌルか‥‥
ちょっと天啓に導かれたので、Postmanの環境変数を確認してみます。
(0M0)やはりそういうことか
Postmanの環境変数にはINITIAL VALUE
とCURRENT VALUE
がありますが、前者はPostmanのサーバに送信・同期されるそうです。
僕は秘密主義なので、後者のみを使っていました。
しかしPostman_environment.json
をエクスポートする際、前者のみを環境変数のvalueとして採用するようです。かわいいね
結果として、僕は何の値も入っていないjsonを環境変数として入力していました。
エクスポート時にCURRENT VALUE
を見るようにする設定とかないかなー、と思って探してみましたが見当たりませんでした。
INITIAL VALUE
を非表示にしてエクスポート、とかもやってみたけど、そこに意味などありませんでしたね。
2. Hostname/IP does not match certificate's altnames
解決策:newman run
に-k
オプションをつける⚠
ただし、このオプションの意味はDisable SSL certificate verification
です。ディスエイブルエスエスエゥサーティフィケイヨベリフィケイシャン🤗
Postmanにも同じようなオプションがありますね(画像左上のSSL certificate verification
)。
このオプションがONのとき、Postmanは通信相手のSSL証明書を検証し、自己署名証明書を使っているサーバのAPIを叩こうとした場合はエラーを出します。
「PostmanにこのオプションがあるならNewmanにもあるでしょ🤔」ってnewman -h
叩いたら-k
を見つけました。
このオプションをOFFにすることで、Postman/Newman側で証明書の検証をしなくなります。
オレオレ証明書を使っているサーバでも疎通できるようになりますが、そもそもオレオレ証明書を使っていること自体がリスクの温床です。
今回の例ではクライアントもサーバも何者か分かっているので問題ない‥‥と思いますが、それでもなりすましや改竄を検知できないのは怖いです。
家を出たとき鍵を閉めたか憶えてないときくらい不安です。その精神状態でコレを書いてます。
つまり、最善の解決方法はちゃんとした証明書を買うことです。お金を払えば無料で証明書が手に入るんだから安いですよね。