Facebook 統合のテストを書いています。rspec を実行すると、次のエラーが表示されます
Failure/Error: before { click_link "Sign in with Facebook" }
NoMethodError:
undefined method `provider' for #<Hash:0x007fbe98511798>
# ./app/models/user.rb:55:in `from_omniauth'
私のOAuthモックには含まれています
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:facebook] = {
'uid' => "999999",
'provider' => "facebook",
'extra' => {
'user_hash' => {
'email' => 'test@gmail.com',
'first_name' => 'First',
'last_name' => 'Last',
'gender' => 'Male'
}
},
'credentials' => {
'token' => "token1234qwert"
}
}
それが明らかに壊れている正確な場所は
def self.from_omniauth(auth)
where("fb_provider = ? and fb_uid = ?", auth.provider, auth.uid.to_s).first_or_initialize.tap do |user|
しかしputs auth.to_yaml
、最初の行としてa を実行すると、モック認証に含めた他のすべてがfrom_omniauth(auth)
表示されます。provider: facebook
私はこの時点で迷っています。提案や助けをいただければ幸いです。ありがとう。