diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2016-06-01 21:00:56 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2016-06-07 22:34:09 +0800 |
commit | e8cf89fa0693df95954339bd7593cd13cbbe2e72 (patch) | |
tree | 355ce1188e605be31ae49b643ee47d2499b91b18 /spec/models/user_spec.rb | |
parent | 3fd0b364ea54832a861482d609bd25d485d5ac9c (diff) | |
download | gitlab-ce-e8cf89fa0693df95954339bd7593cd13cbbe2e72.tar.gz |
Add a test for User#ci_authorized_runners
Diffstat (limited to 'spec/models/user_spec.rb')
-rw-r--r-- | spec/models/user_spec.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6ea8bf9bbe1..2802c7e70bd 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -845,6 +845,63 @@ describe User, models: true do it { is_expected.to eq([private_project]) } end + describe '#ci_authorized_runners' do + let(:user) { create(:user) } + let(:runner) { create(:ci_runner) } + + before { project.runners << runner } + + context 'without any projects' do + let(:project) { create(:project) } + + it 'does not load' do + expect(user.ci_authorized_runners).to eq([]) + end + end + + context 'with personal projects runners' do + let(:namespace) { create(:namespace, owner: user) } + let(:project) { create(:project, namespace: namespace) } + + it 'loads' do + expect(user.ci_authorized_runners).to eq([runner]) + end + end + + shared_examples :member do + it 'loads when the user is a master' do + add_user(Gitlab::Access::MASTER) + expect(user.ci_authorized_runners).to eq([runner]) + end + + it 'does not load when the user is a developer' do + add_user(Gitlab::Access::DEVELOPER) + expect(user.ci_authorized_runners).to eq([]) + end + end + + context 'with groups projects runners' do + let(:group) { create(:group) } + let(:project) { create(:project, group: group) } + + def add_user access + group.add_user(user, access) + end + + it_behaves_like :member + end + + context 'with other projects runners' do + let(:project) { create(:project) } + + def add_user access + Member.add_user(project.project_members, user, access) + end + + it_behaves_like :member + end + end + describe '#viewable_starred_projects' do let(:user) { create(:user) } let(:public_project) { create(:empty_project, :public) } |