discourse/spec/controllers/omniauth_callbacks_controller_spec.rb
2013-08-26 12:59:17 +10:00

213 lines
5.3 KiB
Ruby

require 'spec_helper'
describe Users::OmniauthCallbacksController do
context ".find_authenticator" do
it "fails if a provider is disabled" do
SiteSetting.stubs("enable_twitter_logins?").returns(false)
expect(lambda {
Users::OmniauthCallbacksController.find_authenticator("twitter")
}).to raise_error
end
it "fails for unknown" do
expect(lambda {
Users::OmniauthCallbacksController.find_authenticator("twitter1")
}).to raise_error
end
it "finds an authenticator when enabled" do
SiteSetting.stubs("enable_twitter_logins?").returns(true)
expect(Users::OmniauthCallbacksController.find_authenticator("twitter")).not_to eq(nil)
end
end
# let(:auth) { {info: {email: 'eviltrout@made.up.email', name: 'Robin Ward', uid: 123456789}, "extra" => {"raw_info" => {} } } }
# let(:cas_auth) { { 'uid' => 'casuser', extra: { user: 'casuser'} } }
# shared_examples_for "an authenticaton provider" do |provider|
# context "when #{provider} logins are disabled" do
# before do
# SiteSetting.stubs("enable_#{provider}_logins?").returns(false)
# end
# it "fails" do
# get :complete, provider: provider
# response.should_not be_success
# end
# end
# context "when #{provider} logins are enabled" do
# before do
# SiteSetting.stubs("enable_#{provider}_logins?").returns(true)
# end
# it "succeeds" do
# get :complete, provider: provider
# response.should be_success
# end
# context "and 'invite only' site setting is enabled" do
# before do
# SiteSetting.stubs(:invite_only?).returns(true)
# end
# it "informs the user they are awaiting approval" do
# xhr :get, :complete, provider: provider, format: :json
# expect(
# JSON.parse(response.body)['awaiting_approval']
# ).to be_true
# end
# end
# end
# end
# describe 'invalid provider' do
# it "fails" do
# request.env["omniauth.auth"] = auth
# get :complete, provider: 'hackprovider'
# response.should_not be_success
# end
# end
# describe 'twitter' do
# before do
# request.env["omniauth.auth"] = auth
# end
# it_behaves_like "an authenticaton provider", 'twitter'
# end
# describe 'facebook' do
# before do
# request.env["omniauth.auth"] = auth
# end
# it_behaves_like "an authenticaton provider", 'facebook'
# end
# describe 'cas' do
# before do
# request.env["omniauth.auth"] = cas_auth
# end
# it_behaves_like "an authenticaton provider", 'cas'
# describe "extracted user data" do
# before do
# SiteSetting.stubs(:enable_cas_logins?).returns(true)
# end
# subject {
# xhr :get, :complete, provider: 'cas', format: :json
# OpenStruct.new(JSON.parse(response.body))
# }
# context "when no user infos are returned by cas" do
# its(:username) { should eq 'casuser' }
# its(:name) { should eq 'casuser' }
# its(:email) { should eq 'casuser' } # No cas_domainname configured!
# context "when cas_domainname is configured" do
# before do
# SiteSetting.stubs(:cas_domainname).returns("example.com")
# end
# its(:email) { should eq 'casuser@example.com' }
# end
# end
# context "when user infos are returned by cas" do
# before do
# request.env["omniauth.auth"] = cas_auth.merge({
# info: {
# name: 'Proper Name',
# email: 'public@example.com'
# }
# })
# end
# its(:username) { should eq 'casuser' }
# its(:name) { should eq 'Proper Name' }
# its(:email) { should eq 'public@example.com' }
# end
# end
# end
# describe 'open id handler' do
# before do
# request.env["omniauth.auth"] = { info: {email: 'eviltrout@made.up.email'}, extra: {identity_url: 'http://eviltrout.com'}}
# end
# describe "google" do
# it_behaves_like "an authenticaton provider", 'google'
# end
# describe "yahoo" do
# it_behaves_like "an authenticaton provider", 'yahoo'
# end
# end
# describe 'github' do
# before do
# request.env["omniauth.auth"] = auth
# end
# it_behaves_like "an authenticaton provider", 'github'
# end
# describe 'persona' do
# before do
# request.env["omniauth.auth"] = auth
# end
# it_behaves_like "an authenticaton provider", 'persona'
# end
# describe 'oauth2' do
# before do
# Discourse.stubs(:auth_providers).returns([stub(name: 'my_oauth2_provider', type: :oauth2)])
# request.env["omniauth.auth"] = { uid: 'my-uid', provider: 'my-oauth-provider-domain.net', info: {email: 'eviltrout@made.up.email', name: 'Chatanooga'}}
# end
# describe "#create_or_sign_on_user_using_oauth2" do
# context "User already exists" do
# before do
# User.stubs(:find_by_email).returns(Fabricate(:user))
# end
# it "should create an OauthUserInfo" do
# expect {
# post :complete, provider: 'my_oauth2_provider'
# }.to change { Oauth2UserInfo.count }.by(1)
# end
# end
# end
# end
end