неопределенная ошибка метода при попытке проверки работоспособности omniauth на огурец - PullRequest
1 голос
/ 22 февраля 2012

Я пытаюсь сделать несколько тестов на огурец у omniauth при работе Facebook.

В настоящее время я получаю следующую ошибку:

Given I am not logged in                         # features/step_definitions/user_steps.rb:79
When I go to the homepage                      # features/step_definitions/web_steps.rb:51
And I follow "Sign in"                         # features/step_definitions/web_steps.rb:61
Then I should see "Facebook"                   # features/step_definitions/web_steps.rb:110
When I sign in with facebook                   # features/step_definitions/omniauth_steps.rb:1
  undefined method `[]=' for nil:NilClass (NoMethodError)
  (eval):2:in `click_link'
  ./features/step_definitions/web_steps.rb:62:in `/^(?:|I )follow "([^"]*)"$/'
  features/users/login_with_facebook.feature:14:in `When I sign in with facebook'
Then I should be signed in                     # features/step_definitions/user_steps.rb:60

У меня есть следующий файл omniauth_steps.rb

Given /^I sign in with facebook$/ do
  step %{I follow "Facebook"}
end

И support / omniauth.rb

Before('@omniauth_test') do
  OmniAuth.config.test_mode = true
  p "OmniAuth.config.test_mode is #{OmniAuth.config.test_mode}"
  OmniAuth.config.mock_auth[:facebook] = {
    :provider => 'facebook',
    :uid => '1234567',
    :info => {
      :nickname => 'jbloggs',
      :email => 'joe@bloggs.com',
      :name => 'Joe Bloggs',
      :first_name => 'Joe',
      :last_name => 'Bloggs',
    },
    :credentials => {
      :token => 'ABCDEF...', # OAuth 2.0 access_token, which you may wish to store
      :expires_at => 1321747205, # when the access token expires (if it expires)
      :expires => true # if you request `offline_access` this will be false
    },
    :extra => {
      :raw_info => {
        :id => '1234567',
        :name => 'Joe Bloggs',
        :first_name => 'Joe',
        :last_name => 'Bloggs',
        :username => 'jbloggs',
        :email => 'joe@bloggs.com',
      }
    }
  }
end

After('@omniauth_test') do
  OmniAuth.config.test_mode = false
end

Когда я делаю ручные тесты, все работает, так что я рад, что моя конфигурация в порядке, это просто ремень и брекеты. Сообщение об ошибке не слишком информативно, поэтому я надеюсь, что кто-то может остановить очевидный недостаток! Я использую последние версии для rails, devise, omniauth и omniauth-facebook.

Редактировать

Глядя на логи, я вижу это в журнале разработки:

Started GET "/users/auth/facebook" for 127.0.0.1 at 2012-02-22 14:52:16 +0100
  Processing by Users::SessionsController#setup as HTML
  Rendered text template (0.0ms)
Completed 404 Not Found in 2ms (Views: 0.6ms | ActiveRecord: 0.2ms)
Started GET "/users/auth/facebook/callback?code=AQ<snip>IE" for 127.0.0.1 at 2012-02-22 14:52:18 +0100
Processing by Users::SessionsController#setup as HTML

Журнал испытаний отличается, я получаю два 404. Первый законен (я использую пользовательскую настройку Omniauth), а второй снова вызывает «users / auth / facebook» вместо «/ users / auth / facebook / callback»

...