summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2016-06-01 21:00:56 +0800
committerLin Jen-Shin <godfat@godfat.org>2016-06-07 22:34:09 +0800
commite8cf89fa0693df95954339bd7593cd13cbbe2e72 (patch)
tree355ce1188e605be31ae49b643ee47d2499b91b18
parent3fd0b364ea54832a861482d609bd25d485d5ac9c (diff)
downloadgitlab-ce-e8cf89fa0693df95954339bd7593cd13cbbe2e72.tar.gz
Add a test for User#ci_authorized_runners
-rw-r--r--spec/models/user_spec.rb57
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) }