Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-10-20 11:43:02 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-10-20 11:43:02 +0300
commitd9ab72d6080f594d0b3cae15f14b3ef2c6c638cb (patch)
tree2341ef426af70ad1e289c38036737e04b0aa5007 /spec/requests/api/graphql/ci
parentd6e514dd13db8947884cd58fe2a9c2a063400a9b (diff)
Add latest changes from gitlab-org/gitlab@14-4-stable-eev14.4.0-rc42
Diffstat (limited to 'spec/requests/api/graphql/ci')
-rw-r--r--spec/requests/api/graphql/ci/runner_spec.rb88
-rw-r--r--spec/requests/api/graphql/ci/runners_spec.rb12
2 files changed, 92 insertions, 8 deletions
diff --git a/spec/requests/api/graphql/ci/runner_spec.rb b/spec/requests/api/graphql/ci/runner_spec.rb
index 74547196445..ab53ff654e9 100644
--- a/spec/requests/api/graphql/ci/runner_spec.rb
+++ b/spec/requests/api/graphql/ci/runner_spec.rb
@@ -6,6 +6,7 @@ RSpec.describe 'Query.runner(id)' do
include GraphqlHelpers
let_it_be(:user) { create(:user, :admin) }
+ let_it_be(:group) { create(:group) }
let_it_be(:active_instance_runner) do
create(:ci_runner, :instance, description: 'Runner 1', contacted_at: 2.hours.ago,
@@ -18,12 +19,20 @@ RSpec.describe 'Query.runner(id)' do
version: 'adfe157', revision: 'b', ip_address: '10.10.10.10', access_level: 1, run_untagged: true)
end
+ let_it_be(:active_group_runner) do
+ create(:ci_runner, :group, groups: [group], description: 'Group runner 1', contacted_at: 2.hours.ago,
+ active: true, version: 'adfe156', revision: 'a', locked: true, ip_address: '127.0.0.1', maximum_timeout: 600,
+ access_level: 0, tag_list: %w[tag1 tag2], run_untagged: true)
+ end
+
def get_runner(id)
case id
when :active_instance_runner
active_instance_runner
when :inactive_instance_runner
inactive_instance_runner
+ when :active_group_runner
+ active_group_runner
end
end
@@ -61,7 +70,39 @@ RSpec.describe 'Query.runner(id)' do
'ipAddress' => runner.ip_address,
'runnerType' => runner.instance_type? ? 'INSTANCE_TYPE' : 'PROJECT_TYPE',
'jobCount' => 0,
- 'projectCount' => nil
+ 'projectCount' => nil,
+ 'adminUrl' => "http://localhost/admin/runners/#{runner.id}",
+ 'userPermissions' => {
+ 'readRunner' => true,
+ 'updateRunner' => true,
+ 'deleteRunner' => true
+ }
+ )
+ expect(runner_data['tagList']).to match_array runner.tag_list
+ end
+ end
+
+ shared_examples 'retrieval with no admin url' do |runner_id|
+ let(:query) do
+ wrap_fields(query_graphql_path(query_path, all_graphql_fields_for('CiRunner')))
+ end
+
+ let(:query_path) do
+ [
+ [:runner, { id: get_runner(runner_id).to_global_id.to_s }]
+ ]
+ end
+
+ it 'retrieves expected fields' do
+ post_graphql(query, current_user: user)
+
+ runner_data = graphql_data_at(:runner)
+ expect(runner_data).not_to be_nil
+
+ runner = get_runner(runner_id)
+ expect(runner_data).to match a_hash_including(
+ 'id' => "gid://gitlab/Ci::Runner/#{runner.id}",
+ 'adminUrl' => nil
)
expect(runner_data['tagList']).to match_array runner.tag_list
end
@@ -147,6 +188,39 @@ RSpec.describe 'Query.runner(id)' do
it_behaves_like 'runner details fetch', :inactive_instance_runner
end
+ describe 'for runner inside group request' do
+ let(:query) do
+ %(
+ query {
+ group(fullPath: "#{group.full_path}") {
+ runners {
+ edges {
+ webUrl
+ node {
+ id
+ }
+ }
+ }
+ }
+ }
+ )
+ end
+
+ it 'retrieves webUrl field with expected value' do
+ post_graphql(query, current_user: user)
+
+ runner_data = graphql_data_at(:group, :runners, :edges)
+ expect(runner_data).to match_array [
+ a_hash_including(
+ 'webUrl' => "http://localhost/groups/#{group.full_path}/-/runners/#{active_group_runner.id}",
+ 'node' => {
+ 'id' => "gid://gitlab/Ci::Runner/#{active_group_runner.id}"
+ }
+ )
+ ]
+ end
+ end
+
describe 'for multiple runners' do
let_it_be(:project1) { create(:project, :test_repo) }
let_it_be(:project2) { create(:project, :test_repo) }
@@ -176,7 +250,7 @@ RSpec.describe 'Query.runner(id)' do
end
before do
- project_runner2.projects.clear
+ project_runner2.runner_projects.clear
post_graphql(query, current_user: user)
end
@@ -205,6 +279,16 @@ RSpec.describe 'Query.runner(id)' do
it_behaves_like 'retrieval by unauthorized user', :active_instance_runner
end
+ describe 'by non-admin user' do
+ let(:user) { create(:user) }
+
+ before do
+ group.add_user(user, Gitlab::Access::OWNER)
+ end
+
+ it_behaves_like 'retrieval with no admin url', :active_group_runner
+ end
+
describe 'by unauthenticated user' do
let(:user) { nil }
diff --git a/spec/requests/api/graphql/ci/runners_spec.rb b/spec/requests/api/graphql/ci/runners_spec.rb
index 778fe5b129e..51a07e60e15 100644
--- a/spec/requests/api/graphql/ci/runners_spec.rb
+++ b/spec/requests/api/graphql/ci/runners_spec.rb
@@ -95,9 +95,9 @@ RSpec.describe 'Query.runners' do
let(:ordered_runners) { runners.sort_by(&:contacted_at) }
it_behaves_like 'sorted paginated query' do
- let(:sort_param) { :CONTACTED_ASC }
- let(:first_param) { 2 }
- let(:expected_results) { ordered_runners.map(&:id) }
+ let(:sort_param) { :CONTACTED_ASC }
+ let(:first_param) { 2 }
+ let(:all_records) { ordered_runners.map(&:id) }
end
end
@@ -105,9 +105,9 @@ RSpec.describe 'Query.runners' do
let(:ordered_runners) { runners.sort_by(&:created_at).reverse }
it_behaves_like 'sorted paginated query' do
- let(:sort_param) { :CREATED_DESC }
- let(:first_param) { 2 }
- let(:expected_results) { ordered_runners.map(&:id) }
+ let(:sort_param) { :CREATED_DESC }
+ let(:first_param) { 2 }
+ let(:all_records) { ordered_runners.map(&:id) }
end
end
end