Skip to content
代码片段 群组 项目
提交 308d9261 编辑于 作者: Andreas Deicha's avatar Andreas Deicha
浏览文件

Add jobs endpoint

Changelog: added
上级 a5a9edee
No related branches found
No related tags found
无相关合并请求
# frozen_string_literal: true
module Resolvers
module Ci
class AllJobsResolver < BaseResolver
include Gitlab::Graphql::Authorize::AuthorizeResource
include LooksAhead
type ::Types::Ci::JobType.connection_type, null: true
argument :statuses, [::Types::Ci::JobStatusEnum],
required: false,
description: 'Filter jobs by status.'
def resolve_with_lookahead(statuses: nil)
jobs = ::Ci::JobsFinder.new(current_user: current_user, params: { scope: statuses }).execute
apply_lookahead(jobs)
end
end
end
end
...@@ -154,6 +154,12 @@ class QueryType < ::Types::BaseObject ...@@ -154,6 +154,12 @@ class QueryType < ::Types::BaseObject
null: true, null: true,
description: "Whether Gitpod is enabled in application settings." description: "Whether Gitpod is enabled in application settings."
field :jobs,
::Types::Ci::JobType.connection_type,
null: true,
description: 'All jobs on this GitLab instance.',
resolver: ::Resolvers::Ci::AllJobsResolver
def design_management def design_management
DesignManagementObject.new(nil) DesignManagementObject.new(nil)
end end
......
...@@ -226,6 +226,22 @@ Returns [`Iteration`](#iteration). ...@@ -226,6 +226,22 @@ Returns [`Iteration`](#iteration).
| ---- | ---- | ----------- | | ---- | ---- | ----------- |
| <a id="queryiterationid"></a>`id` | [`IterationID!`](#iterationid) | Find an iteration by its ID. | | <a id="queryiterationid"></a>`id` | [`IterationID!`](#iterationid) | Find an iteration by its ID. |
   
### `Query.jobs`
All jobs on this GitLab instance.
Returns [`CiJobConnection`](#cijobconnection).
This field returns a [connection](#connections). It accepts the
four standard [pagination arguments](#connection-pagination-arguments):
`before: String`, `after: String`, `first: Int`, `last: Int`.
#### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="queryjobsstatuses"></a>`statuses` | [`[CiJobStatus!]`](#cijobstatus) | Filter jobs by status. |
### `Query.licenseHistoryEntries` ### `Query.licenseHistoryEntries`
   
Fields related to entries in the license history. Fields related to entries in the license history.
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'getting job information' do
include GraphqlHelpers
let_it_be(:job) { create(:ci_build, name: 'job1') }
let(:query) do
graphql_query_for(:jobs)
end
context 'when user is admin' do
let_it_be(:current_user) { create(:admin) }
it 'has full access to all jobs' do
post_graphql(query, current_user: current_user)
expect(graphql_data['jobs']['nodes'].first["name"]).to match("job1")
expect(graphql_data['jobs']['count']).to match(1)
end
end
context 'if the user is not an admin' do
let_it_be(:current_user) { create(:user) }
it 'has no access to the jobs' do
post_graphql(query, current_user: current_user)
expect(graphql_data['jobs']['nodes']).to match([])
expect(graphql_data['jobs']['count']).to match(0)
end
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册