読者です 読者をやめる 読者になる 読者になる

グロースエンジニアのブログ

プログラミングとウェブ解析をやっています。Googleアナリティクス好きなRuby on Rails エンジニアです!

【Rails5】gem omniauth-google-oauth2 のrspecテストではまった

ログインテストを書いていてハマったのでメモ。

以下を参考にテストを書いていた。

Integration Testing · omniauth/omniauth Wiki · GitHub

Rails + Devise + OmniAuth で Facebook/Twitter の OAuth 認証を RSpec + Capybara でインテグレーションテスト(RequestSpec) | EasyRamble

How to Test Drive OmniAuth Google OAuth2 for your Rails App — Jesse Spevack

 

なるほど!なるほど!と思いながら真似してやっていたが、上手く行かず...

rspec 内に binding.pry を仕込んで中を見てみると上手く設定できてないみたいで、デフォルトのパラメータが返ってくる。

[3] pry(#<Users::OmniauthCallbacksController>)> request.env['omniauth.auth']
=> {"provider"=>"default",
"uid"=>"1234",
"info"=>{"name"=>"Example User"}}

omniauth-google-oauth2 を使っている場合は google_oauth2

原因は mock を作るときに以下のように google を設定していたこと。

OmniAuth.config.mock_auth[:google]

これを google_oauth2 に修正したら上手くいきました!

OmniAuth.config.mock_auth[:google_oauth2]

mock を使ったテスト自体ほとんど書いたことがなかったので、これを解決するのにハマってしまった...