Celerity не может следовать за редиректом Devise, потому что Celerity не отправляет заголовок accept и Devise отвечает простым текстом - PullRequest
1 голос
/ 28 января 2011

У нас есть приложение Rails, только что обновленное до Rails3, использующее гем Devise Rails3 для аутентификации.Мы использовали Capybara с бэкэндом Celerity для тестирования некоторых страниц.

При доступе к приложению в браузере Devise отвечает перенаправлением на страницу входа, когда пользователь пытается получить доступ к защищенной странице /controller.

В версии Devise для Rails 2.x это работало, даже если входящий запрос имел пустой заголовок принятия */*.

В версии Rails 3 Devise отвечает:простая текстовая строка, когда заголовок accept пуст.

Причина, по которой значение пустого заголовка accept имеет значение, заключается в том, что мы используем серверную часть Celerity Capybara для тестирования некоторых страниц, и, очевидно, Celerity отправляет пустое подтверждениезаголовок, и, следовательно, не перенаправляется Devise.Это поведение изменилось с Devise для Rails 2.x на Devise для Rails 3.

Сбой Celerity с UnexpectedPageException, и журнал сервера сообщает, что запрос был сделан с */* в качестве заголовка принятия.

При использовании серверной части Selenium / Webdriver в одном и том же наборе тестов проблема исчезает.

Существует два способа решения этой проблемы:

  1. Скажите Devise, чтобы он как-то всегда предполагалtext / html как принять заголовок и ответить соответственно.Как это могло быть сделано?Нужно ли переопределять контроллеры?
  2. «Исправить» Celerity для отправки текста / html в качестве принимающего заголовка.Как это можно сделать?
  3. Это проблема / ошибка HTMLUnit?

Для меня # 2 выглядит «правильным» способом исправить это, но я не уверенесли отсутствие принятия заголовка Celerity / HTMLUnit является ошибкой или функцией.Мысли?

1 Ответ

2 голосов
/ 03 февраля 2011

Оказывается, проблема с HTMLUnit. Я сделал патч для драгоценности Celerity, который вы можете найти здесь: https://github.com/jarib/celerity/pull/49

Будет установлен заголовок принятия по умолчанию "text / html", но также добавлен необязательный параметр для его переопределения.

...