ちょっとハマったのでメモ。
omniauth-identityの場合
sessions_controller.rb
class SessionsController < ApplicationController
def create
user = User.find(env["omniauth.auth"]["uid"])
session[:user_id] = user.id
redirect_to expenses_url, notice: "Signed in!"
end
end
spec_helper.rb
OmniAuth.config.test_mode = true
login_helper.rb
def login(user, password)
OmniAuth.config.mock_auth[:identity] = { 'provider' => 'identity', 'uid' => user.id }
post '/auth/identity/callback', screen_name: user.screen_name, password: password
end
あとは各specからbefore { login(user, password) }
とかするだけ。
twitterとかの認証も同じ感じでできるはず。