DevailsのRails3 gemを使用してRails3にアップグレードしたばかりのRailsアプリケーションがあります。私たちは、CelerityバックエンドでCapybaraを使用して、一部のページをテストしてきました。CelerityはAcceptヘッダーを送信せず、Deviseがプレーンテキストで応答するため、CelerityはDeviseリダイレクトに従うことができません
ブラウザでアプリケーションにアクセスすると、ユーザーが保護されたページ/コントローラにアクセスしようとすると、Deviseはログインページにリダイレクトして応答します。
Rails 2.xバージョンのDeviseでは、着信要求にブランクの受け入れ側のヘッダ*/*
があっても動作していました。
Rails 3バージョンでは、Acceptヘッダーがブランクの場合、Deviseはプレーンテキスト文字列で応答します。
私たちがCapybaraのCelerityバックエンドを使用してページの一部をテストしているため、Celerityが空白の受け入れヘッダーを送信し、Deviseによってリダイレクトされないためです。この動作は、Deviles for Rails 2.xからDevails for Rails 3に変更されました。
CelerityはUnexpectedPageExceptionで失敗し、サーバーログは要求が*/*
で受け付けられたことを報告します。
まったく同じテストスイートでSelenium/Webdriverバックエンドを使用すると、問題はなくなります。
これに対処する2つの方法があります。
- は、ヘッダーを受け入れ、それに応じて対応として何とか常にtext/htmlのを前提とする工夫を教えてください。どうすればそれができますか?コントローラーをオーバーライドする必要はありますか?
- Acceptヘッダーとしてtext/htmlを送信するためのCelerityを修正しました。これはどうすればできますか?
- これはHTMLUnitの問題/バグですか?
私にとって2番目はこれを修正する "正しい"方法のようですが、Celerity/HTMLUnitの受け入れヘッダーが不足しているかどうかは不明です。思考?