Skip to content

Commit 7df1a32

Browse files
committed
Rescue NotFound exception when authorizing build restart
1 parent b450b70 commit 7df1a32

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

lib/travis/api/enqueue/services/restart_model.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ def billing?
4444
rescue Travis::API::V3::InsufficientAccess => e
4545
@cause_of_denial = e.message
4646
false
47+
rescue Travis::API::V3::NotFound
48+
# Owner is on a legacy plan
49+
true
4750
end
4851
end
4952

spec/v3/services/job/restart_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,34 @@
219219
example { expect(Sidekiq::Client.last['class']).to be == 'Travis::Hub::Sidekiq::Worker' }
220220
end
221221

222+
context 'billing authorization' do
223+
context 'billing service rejects the job' do
224+
before do
225+
stub_request(:post, /http:\/\/localhost:9292\/(users|organizations)\/(.+)\/authorize_build/).to_return(
226+
body: MultiJson.dump(allowed: false, rejection_code: :no_build_credits), status: 403
227+
)
228+
end
229+
230+
it 'does not restart the job' do
231+
post("/v3/job/#{job.id}/restart", params, headers)
232+
expect(last_response.status).to eq(403)
233+
end
234+
end
235+
236+
context 'billing service returns 404 (user is not on a new plan)' do
237+
before do
238+
stub_request(:post, /http:\/\/localhost:9292\/(users|organizations)\/(.+)\/authorize_build/).to_return(
239+
body: MultiJson.dump(error: 'Plan not found'), status: 404
240+
)
241+
end
242+
243+
it 'restarts the job' do
244+
post("/v3/job/#{job.id}/restart", params, headers)
245+
expect(last_response.status).to eq(202)
246+
end
247+
end
248+
end
249+
222250
describe "passed state" do
223251
include_examples 'clears debug_options'
224252

0 commit comments

Comments
 (0)