diff --git a/app/views/projects/runners/_group_runners.html.haml b/app/views/projects/runners/_group_runners.html.haml index 785abba945b..a9dfd9cc786 100644 --- a/app/views/projects/runners/_group_runners.html.haml +++ b/app/views/projects/runners/_group_runners.html.haml @@ -20,8 +20,11 @@ - elsif @group_runners.empty? This group does not provide any group Runners yet. - = render partial: 'ci/runner/how_to_setup_runner', - locals: { registration_token: @project.group.runners_token, type: 'group' } + - if can?(current_user, :admin_pipeline, @project.group) + = render partial: 'ci/runner/how_to_setup_runner', + locals: { registration_token: @project.group.runners_token, type: 'group' } + - else + Ask your group master to setup a group Runner. - else %h4.underlined-title Available group Runners : #{@group_runners.count} diff --git a/spec/features/runners_spec.rb b/spec/features/runners_spec.rb index dcd06a4015d..b396e103345 100644 --- a/spec/features/runners_spec.rb +++ b/spec/features/runners_spec.rb @@ -187,51 +187,77 @@ feature 'Runners' do project.add_master(user) end - context 'project without a group' do - given(:project) { create :project } + given(:group) { create :group } - scenario 'group runners are not available' do - visit runners_path(project) + context 'as project and group master' do + background do + group.add_master(user) + end - expect(page).to have_content 'This project does not belong to a group and can therefore not make use of group Runners.' + context 'project with a group but no group runner' do + given(:project) { create :project, group: group } + + scenario 'group runners are not available' do + visit runners_path(project) + + expect(page).to have_content 'This group does not provide any group Runners yet.' + + expect(page).to have_content 'Setup a group Runner manually' + expect(page).not_to have_content 'Ask your group master to setup a group Runner.' + end end end - context 'project with a group but no group runner' do - given(:group) { create :group } - given(:project) { create :project, group: group } + context 'as project master' do + context 'project without a group' do + given(:project) { create :project } - scenario 'group runners are not available' do - visit runners_path(project) + scenario 'group runners are not available' do + visit runners_path(project) - expect(page).to have_content 'This group does not provide any group Runners yet.' - end - end - - context 'project with a group and a group runner' do - given(:group) { create :group } - given(:project) { create :project, group: group } - given!(:ci_runner) { create :ci_runner, groups: [group], description: 'group-runner' } - - scenario 'group runners are available' do - visit runners_path(project) - - expect(page).to have_content 'Available group Runners : 1' - expect(page).to have_content 'group-runner' + expect(page).to have_content 'This project does not belong to a group and can therefore not make use of group Runners.' + end end - scenario 'group runners may be disabled for a project' do - visit runners_path(project) + context 'project with a group but no group runner' do + given(:group) { create :group } + given(:project) { create :project, group: group } - click_on 'Disable group Runners' + scenario 'group runners are not available' do + visit runners_path(project) - expect(page).to have_content 'Enable group Runners' - expect(project.reload.group_runners_enabled).to be false + expect(page).to have_content 'This group does not provide any group Runners yet.' - click_on 'Enable group Runners' + expect(page).not_to have_content 'Setup a group Runner manually' + expect(page).to have_content 'Ask your group master to setup a group Runner.' + end + end - expect(page).to have_content 'Disable group Runners' - expect(project.reload.group_runners_enabled).to be true + context 'project with a group and a group runner' do + given(:group) { create :group } + given(:project) { create :project, group: group } + given!(:ci_runner) { create :ci_runner, groups: [group], description: 'group-runner' } + + scenario 'group runners are available' do + visit runners_path(project) + + expect(page).to have_content 'Available group Runners : 1' + expect(page).to have_content 'group-runner' + end + + scenario 'group runners may be disabled for a project' do + visit runners_path(project) + + click_on 'Disable group Runners' + + expect(page).to have_content 'Enable group Runners' + expect(project.reload.group_runners_enabled).to be false + + click_on 'Enable group Runners' + + expect(page).to have_content 'Disable group Runners' + expect(project.reload.group_runners_enabled).to be true + end end end end