gitlab-org--gitlab-foss/spec/lib/gitlab/auth/o_auth/provider_spec.rb
Stan Hu 7486d424b9 Fix broken Git over HTTP clones with LDAP users
Due to a regression in !20608, the LDAP authenticator was not being used
unless OmniAuth was enabled. This change allows the LDAP provider to be used
if it is configured regardless of the OmniAuth setting.

Closes #50579
2018-08-22 13:07:14 -07:00

84 lines
2.2 KiB
Ruby

require 'spec_helper'
describe Gitlab::Auth::OAuth::Provider do
describe '.enabled?' do
before do
allow(described_class).to receive(:providers).and_return([:ldapmain, :google_oauth2])
end
context 'when OmniAuth is disabled' do
before do
allow(Gitlab::Auth).to receive(:omniauth_enabled?).and_return(false)
end
it 'allows database auth' do
expect(described_class.enabled?('database')).to be_truthy
end
it 'allows LDAP auth' do
expect(described_class.enabled?('ldapmain')).to be_truthy
end
it 'does not allow other OmniAuth providers' do
expect(described_class.enabled?('google_oauth2')).to be_falsey
end
end
context 'when OmniAuth is enabled' do
before do
allow(Gitlab::Auth).to receive(:omniauth_enabled?).and_return(true)
end
it 'allows database auth' do
expect(described_class.enabled?('database')).to be_truthy
end
it 'allows LDAP auth' do
expect(described_class.enabled?('ldapmain')).to be_truthy
end
it 'allows other OmniAuth providers' do
expect(described_class.enabled?('google_oauth2')).to be_truthy
end
end
end
describe '#config_for' do
context 'for an LDAP provider' do
context 'when the provider exists' do
it 'returns the config' do
expect(described_class.config_for('ldapmain')).to be_a(Hash)
end
end
context 'when the provider does not exist' do
it 'returns nil' do
expect(described_class.config_for('ldapfoo')).to be_nil
end
end
end
context 'for an OmniAuth provider' do
before do
provider = OpenStruct.new(
name: 'google',
app_id: 'asd123',
app_secret: 'asd123'
)
allow(Gitlab.config.omniauth).to receive(:providers).and_return([provider])
end
context 'when the provider exists' do
it 'returns the config' do
expect(described_class.config_for('google')).to be_a(OpenStruct)
end
end
context 'when the provider does not exist' do
it 'returns nil' do
expect(described_class.config_for('foo')).to be_nil
end
end
end
end
end