POST リクエストをテストする自動化があるとします。これらの POST リクエストは、Rails の組み込み CSRF 保護により、CSRF トークンが含まれていないと機能しません。
この場合、自動化を実行するためのベスト プラクティスは何ですか?
GET 以外のすべてのカスタム リクエストに CSRF トークンを含める必要がありますか? (「はい」の場合は「どのように?」)
または、自動化のための CSRF 保護を無効にするようにアプリを構成する方がよいでしょうか?
POST リクエストをテストする自動化があるとします。これらの POST リクエストは、Rails の組み込み CSRF 保護により、CSRF トークンが含まれていないと機能しません。
この場合、自動化を実行するためのベスト プラクティスは何ですか?
GET 以外のすべてのカスタム リクエストに CSRF トークンを含める必要がありますか? (「はい」の場合は「どのように?」)
または、自動化のための CSRF 保護を無効にするようにアプリを構成する方がよいでしょうか?
そもそもなぜその質問をしたのかわかりませんが、喜んでお答えします :)
簡単に言えば、自動化テストに使用するツールによって異なります。回答のタグでツール (cucumber with watir) を使用する場合、これらのツールはブラウザーを直接自動化するため、すべてが期待どおりに機能します。
これは、テストが実際のユーザーと同様に動作することを意味します。CSRF トークン チェックが実際のユーザーに対して機能する場合、自動化されたテストでも機能します。これらのテストで POST リクエストを手動で行うことはありません (少なくとも行うべきではありません) が、Web ページのフォームに記入してそのフォームを送信します。これは、Rails によって生成された CSRF トークンも送信されることを意味します。そして、すべてがうまくダンディになります。
ただし、奇妙な理由で POST リクエストを手動で作成する必要がある場合は、test
環境の CSRF チェックを無効にする必要があります。