require 'test_helper' class OmniAuthRoutesTest < ActionController::TestCase tests ApplicationController def assert_path(action, provider, with_param=true) # Resource param assert_equal @controller.send(action, :user, provider), @controller.send("user_#{action}", provider) # With an object assert_equal @controller.send(action, User.new, provider), @controller.send("user_#{action}", provider) if with_param # Default url params assert_equal @controller.send(action, :user, provider, :param => 123), @controller.send("user_#{action}", provider, :param => 123) end end test 'should alias omniauth_callback to mapped user auth_callback' do assert_path :omniauth_callback_path, :facebook end test 'should alias omniauth_authorize to mapped user auth_authorize' do assert_path :omniauth_authorize_path, :facebook, false end test 'should generate authorization path' do assert_match "/users/auth/facebook", @controller.omniauth_authorize_path(:user, :facebook) assert_raise ArgumentError do @controller.omniauth_authorize_path(:user, :github) end end test 'should generate authorization path for named open_id omniauth' do assert_match "/users/auth/google", @controller.omniauth_authorize_path(:user, :google) end test 'should generate authorization path with params' do assert_match "/users/auth/open_id?openid_url=http%3A%2F%2Fyahoo.com", @controller.omniauth_authorize_path(:user, :open_id, :openid_url => "http://yahoo.com") end test 'should not add a "?" if no param was sent' do assert_equal "/users/auth/open_id", @controller.omniauth_authorize_path(:user, :open_id) end test 'should set script name in the path if present' do @request.env['SCRIPT_NAME'] = '/q' assert_equal "/q/users/auth/facebook", @controller.omniauth_authorize_path(:user, :facebook) end end