Обнаружена проблема с перенаправлением Cucumber, Capybara, Rails 3, 302

#ruby-on-rails-3 #cucumber #capybara #http-status-code-302

#ruby-on-rails-3 #cucumber #capybara #http-status-code-302

Вопрос:

Я новичок в capybara, но я пытаюсь использовать его для тестирования (с cucumber) приложения, которое я конвертирую с rails 2 на rails 3. Тем не менее, я получаю странное поведение при тестировании входа в систему. У меня есть шаг входа в систему cucumber, который выполняет следующее:

 visit login_path
fill_in 'Email', :with => 'test@example.com'
fill_in 'Password', :with => 'XXXXXXXXX'
click_button 'Log in'
  

При выполнении этого пользовательского шага cucumber выдает мне следующую ошибку:

Не удалось найти действие ‘index’ для UserSessionsController
AbstractController::ActionNotFound)

И в журнале выводится следующее:

 Started GET "/login" for 127.0.0.1 at Fri May 06 15:48:42 -0400 2011
Processing by UserSessionsController#new as HTML
Redirected to https://www.example.com/login
Completed 302 Found in 1ms

Started GET "/login" for 127.0.0.1 at Fri May 06 15:48:42 -0400 2011
Processing by UserSessionsController#new as HTML
Rendered user_sessions/new.html.erb within layouts/promo (15.8ms)
Completed 200 OK in 38ms (Views: 24.5ms | ActiveRecord: 2.9ms)

Started POST "/user_sessions" for 127.0.0.1 at Fri May 06 15:48:42 -0400 2011
Processing by UserSessionsController#create as HTML
Parameters: {"commit"=>"Log in", "user_session"=>{"password"=>"[FILTERED]", "email"=>"test@example.com"}, "utf8"=>"✓"}
Redirected to https://www.example.com/user_sessions
Completed 302 Found in 1ms

Started GET "/user_sessions" for 127.0.0.1 at Fri May 06 15:48:42 -0400 2011 
SQL (0.6ms)  ROLLBACK
  

Итак, вот мои вопросы:
Почему /login ПОЛУЧАЕТ, а затем перенаправляется в /login???
Почему СООБЩЕНИЕ в / user_sessions также перенаправляется на себя (что вызывает ошибку, которую я вижу)???

В процессе разработки все работает отлично, и я не вижу кодов состояния 302. Это может быть что-то простое, но я этого не вижу.

РЕДАКТИРОВАТЬ: через 5 минут после отправки этого я понял, что причиной перенаправлений был плагин SSL_requirement. Когда я комментирую «ssl_required», тесты проходят. Мне придется провести дополнительные исследования в Capybara, чтобы узнать, как ее настроить, если кто-нибудь не даст ответа.

ОТРЕДАКТИРУЙТЕ ОТВЕТ (поскольку он не позволит мне опубликовать его в течение 8 часов): Я нашел ответ. Как я уже указывал в своей правке, проблема заключается в перенаправлении из-за требования SSL. Очень хорошее описание проблемы можно найти здесь:https://github.com/jnicklas/capybara/issues/85 . Текущее решение — это патч, который сработал для меня, который можно найти здесь: https://gist.github.com/466411 .

Ответ №1:

Я нашел ответ. Как я уже указывал в своей правке, проблема заключается в перенаправлении из-за требования SSL. Очень хорошее описание проблемы можно найти здесь:https://github.com/jnicklas/capybara/issues/85 . Текущее решение — это патч, который сработал для меня, который можно найти здесь: https://gist.github.com/466411 .