gitlab-org--gitlab-foss/spec/lib/gitlab/auth_spec.rb

95 lines
3.3 KiB
Ruby
Raw Normal View History

2012-09-12 02:23:16 -04:00
require 'spec_helper'
2015-12-09 05:55:36 -05:00
describe Gitlab::Auth, lib: true do
2016-04-29 12:58:55 -04:00
let(:gl_auth) { described_class }
2012-09-12 02:23:16 -04:00
2016-06-13 09:38:25 -04:00
describe 'find_for_git_client' do
2016-04-29 12:58:55 -04:00
it 'recognizes CI' do
token = '123'
project = create(:empty_project)
project.update_attributes(runners_token: token, builds_enabled: true)
ip = 'ip'
expect(gl_auth).to receive(:rate_limit!).with(ip, success: true, login: 'gitlab-ci-token')
2016-06-13 09:38:25 -04:00
expect(gl_auth.find_for_git_client('gitlab-ci-token', token, project: project, ip: ip)).to eq(Gitlab::Auth::Result.new(nil, :ci))
2016-04-29 12:58:55 -04:00
end
it 'recognizes master passwords' do
user = create(:user, password: 'password')
ip = 'ip'
expect(gl_auth).to receive(:rate_limit!).with(ip, success: true, login: user.username)
2016-06-13 09:38:25 -04:00
expect(gl_auth.find_for_git_client(user.username, 'password', project: nil, ip: ip)).to eq(Gitlab::Auth::Result.new(user, :gitlab_or_ldap))
2016-04-29 12:58:55 -04:00
end
it 'recognizes OAuth tokens' do
user = create(:user)
application = Doorkeeper::Application.create!(name: "MyApp", redirect_uri: "https://app.com", owner: user)
token = Doorkeeper::AccessToken.create!(application_id: application.id, resource_owner_id: user.id)
ip = 'ip'
expect(gl_auth).to receive(:rate_limit!).with(ip, success: true, login: 'oauth2')
2016-06-13 09:38:25 -04:00
expect(gl_auth.find_for_git_client("oauth2", token.token, project: nil, ip: ip)).to eq(Gitlab::Auth::Result.new(user, :oauth))
2016-04-29 12:58:55 -04:00
end
it 'returns double nil for invalid credentials' do
login = 'foo'
ip = 'ip'
expect(gl_auth).to receive(:rate_limit!).with(ip, success: false, login: login)
2016-06-13 09:38:25 -04:00
expect(gl_auth.find_for_git_client(login, 'bar', project: nil, ip: ip)).to eq(Gitlab::Auth::Result.new)
2016-04-29 12:58:55 -04:00
end
end
describe 'find_with_user_password' do
2014-09-08 07:11:39 -04:00
let!(:user) do
create(:user,
username: username,
password: password,
password_confirmation: password)
2012-09-12 02:23:16 -04:00
end
let(:username) { 'John' } # username isn't lowercase, test this
2014-09-08 07:11:39 -04:00
let(:password) { 'my-secret' }
2012-09-12 02:23:16 -04:00
2013-09-03 17:53:13 -04:00
it "should find user by valid login/password" do
expect( gl_auth.find_with_user_password(username, password) ).to eql user
2012-09-12 02:23:16 -04:00
end
it 'should find user by valid email/password with case-insensitive email' do
expect(gl_auth.find_with_user_password(user.email.upcase, password)).to eql user
end
it 'should find user by valid username/password with case-insensitive username' do
expect(gl_auth.find_with_user_password(username.upcase, password)).to eql user
end
2013-09-03 17:53:13 -04:00
it "should not find user with invalid password" do
2014-09-08 07:11:39 -04:00
password = 'wrong'
expect( gl_auth.find_with_user_password(username, password) ).not_to eql user
2012-09-12 02:23:16 -04:00
end
2014-09-08 07:11:39 -04:00
it "should not find user with invalid login" do
user = 'wrong'
expect( gl_auth.find_with_user_password(username, password) ).not_to eql user
end
context "with ldap enabled" do
2015-05-21 17:49:06 -04:00
before do
allow(Gitlab::LDAP::Config).to receive(:enabled?).and_return(true)
end
it "tries to autheticate with db before ldap" do
expect(Gitlab::LDAP::Authentication).not_to receive(:login)
gl_auth.find_with_user_password(username, password)
end
it "uses ldap as fallback to for authentication" do
expect(Gitlab::LDAP::Authentication).to receive(:login)
gl_auth.find_with_user_password('ldap_user', 'password')
end
end
2012-09-12 02:23:16 -04:00
end
end