Я пытаюсь написать тесты для аутентификации через Twitter и Facebook. Я использую Devise и Omniauth. Когда я его пробую, он работает правильно, но я не могу пройти тесты на это.
Я следую инструкциям , но этого недостаточно для меня, плюс я делаю вещи немного по-другому (уже есть некоторая кодовая база). У меня есть пользовательские контроллеры для omniauth_callbacks и регистрации.
Моя проблема в том, что когда я запускаю тесты, он говорит:
(::) failed steps (::)
No route matches "/oauth/authorize" (ActionController::RoutingError)
<internal:prelude>:10:in `synchronize'
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:57:in `/^(?:|I )follow "([^"]*)"$/'
features/link_twitter.feature:19:in `And I link twitter'
Failing Scenarios:
cucumber features/link_twitter.feature:16 # Scenario: User links twitter
Откуда исходит этот /oauth/authorize
маршрут и как с этим справиться?
Не похоже, что он доходит до моего OmniauthCallbacksController
. Переходит по ссылке и затем умирает. Я думаю, что это связано с методом обратного вызова Omniauth в тестовом режиме, но я не уверен, как это изменить / управлять.
Обновление : Вот мои маршруты для Devise.
devise_for :users, :controllers => {
:omniauth_callbacks => "users/omniauth_callbacks",
:registrations => 'registrations',
:passwords => 'passwords',
:sessions => 'sessions',
:confirmations => 'confirmations'
} do
match 'confirmations/unconfirmed' => 'confirmations#unconfirmed', :as => :unconfirmed
match 'confirmations/send_advisor_confirmation/:id' => 'confirmations#unregistered_advisor_confirmation', :as => :send_advisor_confirmation
get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end