Rails / Cucumber - тестирование ошибок хостинга omniauth (провайдер: facebook) - (URI :: InvalidComponentError) - PullRequest
5 голосов
/ 21 мая 2011

Я сталкиваюсь с ошибкой при попытке настроить omniauth для целей интеграционного тестирования с огурцом (я настроил Omniauth через Devise, как предоставляет вики)

Пожалуйста, см. Ниже:

Scenario: Test                       # features/omniauth.feature:3
  Given I am signed in with facebook # features/step_definitions/omniauth_steps.rb:1
    bad component(expected host component): http://www.example.com (URI::InvalidComponentError)
    /Users/benoit/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/uri/generic.rb:395:in `check_host'
    /Users/benoit/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/uri/generic.rb:409:in `host='
    ./features/step_definitions/omniauth_steps.rb:2:in `/^I am signed in with facebook$/'
    features/omniauth.feature:4:in `Given I am signed in with facebook'
  Then I open the page               # features/step_definitions/debug_steps.rb:5

Здесьмои файлы:

omniauth.feature

Feature: OmniAuth

  Scenario: Test
    Given I am signed in with facebook
    Then I open the page

omniauth_steps.rb

Given /^I am signed in with facebook$/ do
  visit "/auth/facebook"
end

support / env.rb

OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:facebook] = {
  'uid' => '12345',
  "user_info" => {
    "email" => "foobar@example.com",
    "first_name" => "foo",
    "last_name" => "Bar"
  }
}

инициализатор /devise.rb

case 
  when Rails.env.production?
    config.omniauth :facebook, 'XXXX', 'XXXX', 
    {:scope => 'email, offline_access', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}
  when Rails.env.development?
    config.omniauth :facebook, 'XXXX', 'XXXX'
  when Rails.env.test?
    config.omniauth :facebook, 'XXXX', 'XXXX'
        OmniAuth.config.full_host = 'http://example.com' # issue 257  
end

(ссылка: выпуск 257 )

маршруты

devise_scope :user do 
  get '/auth/:provider' => 'users/omniauth_callbacks#passthru'
end

devise_for :users, :path => "", :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

В качестве информации я также настроил свой тестовый файл facebook test_app сследующий URL: http://example.com/

Я был бы рад узнать, если кто-то думал или испытал это.Спасибо!

Ответы [ 2 ]

1 голос
/ 07 июня 2011

попробуйте добавить:

Before do
  Capybara.default_host = 'example.com'
end

в файл support / env.rb, попробуйте также закомментировать:

OmniAuth.config.full_host = 'http://example.com' # issue 257

из файла инициализатора / devise.rb.

0 голосов
/ 22 мая 2011

Возможно, я предполагаю, что здесь слишком мало, но на всякий случай ... Вы установили контроллер аутентификации и соответствующую маршрутизацию?

# /config/routes.rb
match "/auth/:provider/callback" => "authentications#create"

Редактировать: Извините, я только что понял, что вы сказали, что вы все настроили, как в вики. Я думаю, вы сделали это так. Я думаю, я все равно оставлю это здесь.

Чтобы узнать о том, как настроить Контроллер аутентификации, вы должны посмотреть Ryan Bates screencasts на эту тему. Они действительно отличный ресурс.

У меня есть контроллер с полной аутентификацией facebook, который я могу опубликовать, если хотите? Просто оставьте комментарий.

...