Я пытаюсь написать тесты для аутентификации в Twitter и Facebook. Я использую Devise и Omniauth. Когда я пробую его, он работает правильно, но я не могу пройти тесты.
Я следую инструкциям , но для меня этого недостаточно, плюс я Немного по-другому делаю (уже есть кодовая база). У меня есть собственные контроллеры для omniauth_callbacks и регистраций.
Моя проблема в том, что когда я запускаю тесты, он говорит:
(::) failed steps (::)
No route matches "/oauth/authorize" (ActionController::RoutingError)
: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