2011-01-28 5 views
1

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つの方法があります。

  1. は、ヘッダーを受け入れ、それに応じて対応として何とか常にtext/htmlのを前提とする工夫を教えてください。どうすればそれができますか?コントローラーをオーバーライドする必要はありますか?
  2. Acceptヘッダーとしてtext/htmlを送信するためのCelerityを修正しました。これはどうすればできますか?
  3. これはHTMLUnitの問題/バグですか?

私にとって2番目はこれを修正する "正しい"方法のようですが、Celerity/HTMLUnitの受け入れヘッダーが不足しているかどうかは不明です。思考?

答えて

2

HTMLUnitで問題があることが判明しました。 https://github.com/jarib/celerity/pull/49

デフォルトの受け入れヘッダーを "text/html"に設定しますが、オプションのパラメーターを追加してこれを上書きします。

関連する問題