2016-03-14 4 views
0

Я пытаюсь протестировать простой facebook логин с omniauth. Однако, получив сообщение об ошибке «auth» undefined variable или method. omniauth тестирования документ не включает facebook примеровFacebook omniauth raw info auth extra mock config setup

Запуска тестового Огурца

undefined local variable or method `auth' for #<Cucumber::Rails::World:0x007fa17eeafc78> (NameError) 
     ./features/step_definitions/microsites/quiz/microsites_quiz_entrant_sign_in_facebook_steps.rb:26:in `/^I log in with my facebook email and password quiz$/' 

steps.rb файл

Then(/^I log in with my facebook email and password quiz$/) do 
    OmniAuth.config.add_mock(:facebook, { 
    :provider => "facebook", 
    :uid => '12345', 
    :name => "John Smith", 
    info: { 
     email: "[email protected]", 
     first_name: "Test", 
     last_name: "Tester", 
     gender: "male", 
     dob: auth.extra.raw_info.birthday 
    } 
    }) 
end 

конфигурация/среду/test.rb

OmniAuth.config.test_mode = true 
    OmniAuth.config.mock_auth[:twitter] = OmniAuth::AuthHash.new({ 
    :provider => 'twitter', 
    :uid => '123545' 
    }) 

файл модели

def self.from_facebook auth, campaign, password 
    campaign.entrants.where(fb_uid: auth.uid).first_or_create do |entrant| 
     entrant.fb_uid    = auth.uid 
     entrant.email     = auth.info.email 
     entrant.first_name   = auth.info.first_name 
     entrant.last_name    = auth.info.last_name 
     entrant.password    = password 
     entrant.password_confirmation = password 
     entrant.campaign_id   = campaign.id 
     # DOB is not returned from FB consistently, or not at all 
     entrant.dob     = auth.extra.raw_info.birthday 
     # If DOB is returned, this create will pass, and this line should fire: 
     entrant.skip_confirmation! 
    end 
    end 

ответ

1

Вы насмешливый ответ аутентификации, так что вы не имеете доступа к auth объекта, чтобы получить DOB от - вместо этого вы хотите что-то вроде

OmniAuth.config.add_mock(:facebook, { 
    :provider => "facebook", 
    :uid => '12345', 
    :name => "John Smith", 
    info: { 
    email: "[email protected]", 
    first_name: "Test", 
    last_name: "Tester", 
    gender: "male" 
    }, 
    'extra' => { 
    'raw_info' => { 'dob' => '1980-01-01 or whatever format is returned by Facebook'} 
    } 
}) 
+0

Изумительный. Это сработало. Спасибо за вашу помощь снова. У меня было что-то вроде этого, но неправильный синтаксис. – khoamle

 Смежные вопросы

  • Нет связанных вопросов^_^