From db193cb541150b4529ea4da540902d981113a859 Mon Sep 17 00:00:00 2001 From: Ana Rosas Date: Tue, 5 Jul 2016 10:25:54 -0500 Subject: [PATCH] Use new restart service on request endpoint --- lib/travis/api/app/endpoint/requests.rb | 14 ++++++++++++-- spec/integration/v2/requests_spec.rb | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/travis/api/app/endpoint/requests.rb b/lib/travis/api/app/endpoint/requests.rb index cf67b9a7..590ec331 100644 --- a/lib/travis/api/app/endpoint/requests.rb +++ b/lib/travis/api/app/endpoint/requests.rb @@ -28,10 +28,20 @@ class Travis::Api::App # # I think we need to properly deprecate this by publishing a blog post. Metriks.meter("api.request.restart").mark - respond_with service(:reset_model, params) + + service = Travis::Enqueue::Services::RestartModel.new(current_user, { build_id: params[:build_id] }) + repository_owner = service.target.repository.owner + + if !Travis::Features.enabled_for_all?(:enqueue_to_hub) && !Travis::Features.owner_active?(:enqueue_to_hub, repository_owner) + respond_with service(:reset_model, params) + elsif service.respond_to?(:push) + payload = {id: params[:build_id], user_id: current_user.id} + service.push("job:restart", payload) + status 202 + true + end end end end end end - diff --git a/spec/integration/v2/requests_spec.rb b/spec/integration/v2/requests_spec.rb index 0ed0b43f..cd023599 100644 --- a/spec/integration/v2/requests_spec.rb +++ b/spec/integration/v2/requests_spec.rb @@ -3,6 +3,7 @@ require 'json' describe 'Requests', set_app: true do let(:repo) { Factory.create(:repository) } let(:request) { Factory.create(:request, repository: repo) } + let(:build) { Factory.create(:build, repository: repo) } let(:user) { Factory.create(:user) } let(:token) { Travis::Api::App::AccessToken.create(user: user, app_id: -1) } let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json', 'HTTP_AUTHORIZATION' => "token #{token}" } } @@ -25,4 +26,18 @@ describe 'Requests', set_app: true do response.should deliver_json_for(request, version: 'v2', type: 'request') end end + + describe 'POST /requests' do + it 'triggers a build request using Core code' do + response = post "/requests", { build_id: build.id }, headers + response.status.should be(200) + end + + it 'triggers a build request using Hub' do + Travis::Features.activate_owner(:enqueue_to_hub, repo.owner) + + response = post "/requests", { build_id: build.id }, headers + response.status.should be(202) + end + end end