Commit f07be71b authored by pburdette's avatar pburdette

Apply reviewer feedback

Move authorize to resolver
and fix a few problems.
parent 67cc6cdd
...@@ -2,16 +2,19 @@ ...@@ -2,16 +2,19 @@
module Resolvers module Resolvers
class ProjectJobsResolver < BaseResolver class ProjectJobsResolver < BaseResolver
include Gitlab::Graphql::Authorize::AuthorizeResource
include LooksAhead include LooksAhead
type ::Types::Ci::JobType.connection_type, null: true type ::Types::Ci::JobType.connection_type, null: true
authorize :read_build
alias_method :project, :object authorizes_object!
argument :statuses, [::Types::Ci::JobStatusEnum], argument :statuses, [::Types::Ci::JobStatusEnum],
required: false, required: false,
description: 'Filter jobs by status.' description: 'Filter jobs by status.'
alias_method :project, :object
def ready?(**args) def ready?(**args)
context[self.class] ||= { executions: 0 } context[self.class] ||= { executions: 0 }
context[self.class][:executions] += 1 context[self.class][:executions] += 1
...@@ -29,10 +32,10 @@ module Resolvers ...@@ -29,10 +32,10 @@ module Resolvers
private private
def preloads def preloads
[ {
{ artifacts: :job_artifacts }, artifacts: [:job_artifacts],
{ pipeline: :user } pipeline: [:user]
] }
end end
end end
end end
...@@ -186,10 +186,8 @@ module Types ...@@ -186,10 +186,8 @@ module Types
field :jobs, field :jobs,
Types::Ci::JobType.connection_type, Types::Ci::JobType.connection_type,
null: true, null: true,
description: 'Jobs of a project, only jobs of a single project can be requested at a time.', description: 'Jobs of a single project.',
extras: [:lookahead], resolver: Resolvers::ProjectJobsResolver
resolver: Resolvers::ProjectJobsResolver,
authorize: :read_build
field :pipelines, field :pipelines,
null: true, null: true,
......
...@@ -21,7 +21,7 @@ RSpec.describe Resolvers::ProjectJobsResolver do ...@@ -21,7 +21,7 @@ RSpec.describe Resolvers::ProjectJobsResolver do
describe '#resolve' do describe '#resolve' do
context 'with statuses argument' do context 'with statuses argument' do
let(:args) { { statuses: [Types::Ci::JobStatusEnum.values['SUCCESS'].value] } } let(:args) { { statuses: [Types::Ci::JobStatusEnum.coerce_isolated_input('SUCCESS')] } }
it { is_expected.to contain_exactly(build_one, build_two) } it { is_expected.to contain_exactly(build_one, build_two) }
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment