initial work to add build and job cancellation incl updating existing specs
This commit is contained in:
parent
faabb0f727
commit
faf60a5f7f
13
lib/travis/api/v3/permissions/build.rb
Normal file
13
lib/travis/api/v3/permissions/build.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
require 'travis/api/v3/permissions/generic'
|
||||
|
||||
module Travis::API::V3
|
||||
class Permissions::Build < Permissions::Generic
|
||||
def cancel?
|
||||
write?
|
||||
end
|
||||
|
||||
def restart?
|
||||
write?
|
||||
end
|
||||
end
|
||||
end
|
13
lib/travis/api/v3/permissions/job.rb
Normal file
13
lib/travis/api/v3/permissions/job.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
require 'travis/api/v3/permissions/generic'
|
||||
|
||||
module Travis::API::V3
|
||||
class Permissions::Job < Permissions::Generic
|
||||
def cancel?
|
||||
write?
|
||||
end
|
||||
|
||||
def restart?
|
||||
write?
|
||||
end
|
||||
end
|
||||
end
|
|
@ -6,5 +6,15 @@ module Travis::API::V3
|
|||
return Models::Build.find_by_id(id) if id
|
||||
raise WrongParams, 'missing build.id'.freeze
|
||||
end
|
||||
|
||||
def cancel
|
||||
raise WrongParams, 'missing build.id'.freeze unless build.id
|
||||
payload = {
|
||||
build: { id: build.id }
|
||||
}
|
||||
|
||||
perform_async(:build_cancellation, type: 'api'.freeze, credentials: { token: token }, payload: JSON.dump(payload))
|
||||
payload
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,7 +18,7 @@ module Travis::API::V3
|
|||
route '/build/{build.id}'
|
||||
get :find
|
||||
|
||||
# post :cancel, '/cancel'
|
||||
post :cancel, '/cancel'
|
||||
# post :restart, '/restart'
|
||||
end
|
||||
|
||||
|
|
13
lib/travis/api/v3/services/build/cancel.rb
Normal file
13
lib/travis/api/v3/services/build/cancel.rb
Normal file
|
@ -0,0 +1,13 @@
|
|||
module Travis::API::V3
|
||||
class Services::Build::Cancel < Service
|
||||
|
||||
def run
|
||||
raise LoginRequired unless access_control.logged_in? or access_control.full_access?
|
||||
raise NotFound unless build = find(:build)
|
||||
access_control.permissions(build).cancel!
|
||||
|
||||
payload = query.cancel(build)
|
||||
build
|
||||
end
|
||||
end
|
||||
end
|
|
@ -26,9 +26,13 @@ describe Travis::API::V3::Services::Build::Find do
|
|||
before { get("/v3/build/#{build.id}") }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(parsed_body).to be == {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation" => "standard",
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation" => "standard",
|
||||
"@permissions" => {
|
||||
"read" => true,
|
||||
"cancel" => false,
|
||||
"restart" => false},
|
||||
"id" => build.id,
|
||||
"number" => build.number,
|
||||
"state" => build.state,
|
||||
|
@ -99,9 +103,13 @@ describe Travis::API::V3::Services::Build::Find do
|
|||
after { repo.update_attribute(:private, false) }
|
||||
example { expect(last_response).to be_ok }
|
||||
example { expect(parsed_body).to be == {
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation" => "standard",
|
||||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation" => "standard",
|
||||
"@permissions" => {
|
||||
"read" => true,
|
||||
"cancel" => false,
|
||||
"restart" => false},
|
||||
"id" => build.id,
|
||||
"number" => build.number,
|
||||
"state" => build.state,
|
||||
|
|
|
@ -52,6 +52,10 @@ describe Travis::API::V3::Services::Builds::Find do
|
|||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation" => "standard",
|
||||
"@permissions" => {
|
||||
"read" => true,
|
||||
"cancel" => false,
|
||||
"restart" => false },
|
||||
"id" => build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
|
@ -149,6 +153,10 @@ describe Travis::API::V3::Services::Builds::Find do
|
|||
"@type" => "build",
|
||||
"@href" => "/v3/build/#{build.id}",
|
||||
"@representation" => "standard",
|
||||
"@permissions" => {
|
||||
"read" => true,
|
||||
"cancel" => false,
|
||||
"restart" => false },
|
||||
"id" => build.id,
|
||||
"number" => "3",
|
||||
"state" => "configured",
|
||||
|
|
|
@ -20,6 +20,10 @@ describe Travis::API::V3::Services::Job::Find do
|
|||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{job.id}",
|
||||
"@representation" => "standard",
|
||||
"@permissions" => {
|
||||
"read" => true,
|
||||
"cancel" => false,
|
||||
"restart" => false },
|
||||
"id" => job.id,
|
||||
"number" => job.number,
|
||||
"state" => job.state,
|
||||
|
@ -140,6 +144,10 @@ describe Travis::API::V3::Services::Job::Find do
|
|||
"@type" => "job",
|
||||
"@href" => "/v3/job/#{job.id}",
|
||||
"@representation" => "standard",
|
||||
"@permissions" => {
|
||||
"read" => true,
|
||||
"cancel" => false,
|
||||
"restart" => false },
|
||||
"id" => job.id,
|
||||
"number" => job.number,
|
||||
"state" => job.state,
|
||||
|
|
Loading…
Reference in New Issue
Block a user