Skip to content

Commit 1f88bc3

Browse files
authored
pass through multiple build request configs (#1090)
* pass through multiple build request configs * rename request/configs to request/preview
2 parents 74b04a8 + 983903e commit 1f88bc3

File tree

7 files changed

+27
-13
lines changed

7 files changed

+27
-13
lines changed

lib/travis/api/v3/queries/request.rb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module Travis::API::V3
22
class Queries::Request < Query
3-
params :id, :message, :branch, :sha, :merge_mode, :config, :token, prefix: :request
3+
params :id, :message, :branch, :sha, :merge_mode, :config, :configs, :token, prefix: :request
44

55
def find
66
raise WrongParams, 'missing request.id'.freeze unless id
@@ -37,8 +37,10 @@ def schedule(repository, user)
3737
message: message,
3838
branch: branch || repository.default_branch.name,
3939
sha: sha,
40+
configs: request_configs,
41+
# BC, remove once everyone is on yml/configs, coordinate with Gatekeeper
4042
merge_mode: merge_mode,
41-
config: config
43+
config: to_str(config),
4244
}
4345

4446
::Travis::API::Sidekiq.gatekeeper(
@@ -51,6 +53,17 @@ def schedule(repository, user)
5153

5254
private
5355

56+
def request_configs
57+
configs = self.configs
58+
configs.each { |config| config['config'] = to_str(config['config']) } if configs
59+
configs ||= [{ config: to_str(config), merge_mode: merge_mode }] if config
60+
configs
61+
end
62+
63+
def to_str(config)
64+
config.is_a?(Hash) ? JSON.dump(config) : config
65+
end
66+
5467
def create_request(repository)
5568
Models::Request.create!(
5669
event_type: :api,

lib/travis/api/v3/queries/request_configs.rb renamed to lib/travis/api/v3/queries/request_preview.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
require 'faraday'
33

44
module Travis::API::V3
5-
class Queries::RequestConfigs < Query
5+
class Queries::RequestPreview < Query
66
attr_reader :user, :repo
77

88
def expand(user, repo)

lib/travis/api/v3/renderer/request_configs.rb renamed to lib/travis/api/v3/renderer/request_preview.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module Travis::API::V3
2-
class Renderer::RequestConfigs < ModelRenderer
2+
class Renderer::RequestPreview < ModelRenderer
33
representation(:minimal, :raw_configs, :request_config, :job_configs, :messages, :full_messages)
44
representation(:standard, *representations[:minimal])
55
end

lib/travis/api/v3/routes.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ module Routes
174174
resource :request do
175175
route '/request/{request.id}'
176176
get :find
177-
post :configs
177+
post :preview
178178

179179
resource :messages do
180180
route '/messages'

lib/travis/api/v3/services/request/configs.rb renamed to lib/travis/api/v3/services/request/preview.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
module Travis::API::V3
2-
class Services::Request::Configs < Service
3-
result_type :request_configs
2+
class Services::Request::Preview < Service
3+
result_type :request_preview
44
params :ref, :configs, :data
55
params :config, :mode # BC
66

77
def run
88
repository = check_login_and_find(:repository)
99
access_control.permissions(repository).create_request!
1010
user = access_control.user
11-
result query(:request_configs).expand(user, repo)
11+
result query(:request_preview).expand(user, repo)
1212
end
1313

1414
private

spec/v3/services/request/configs_spec.rb renamed to spec/v3/services/request/preview_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
describe Travis::API::V3::Services::Request::Configs, set_app: true do
1+
describe Travis::API::V3::Services::Request::Preview, set_app: true do
22
let(:repo) { FactoryBot.create(:repository_without_last_build, owner_name: 'svenfuchs', name: 'minimal') }
33
let(:request) { Travis::API::V3::Models::Request.last }
44
let(:env_var) { { id: nil, name: 'ONE', value: Travis::Settings::EncryptedValue.new('one'), public: true, branch: 'foo', repository_id: repo.id } }
@@ -24,7 +24,7 @@ def parse(str)
2424
end
2525

2626
describe 'not authenticated' do
27-
before { post("/v3/repo/#{repo.id}/request/configs") }
27+
before { post("/v3/repo/#{repo.id}/request/preview") }
2828
it { expect(status).to eq 403 }
2929
it do
3030
expect(body).to eq(
@@ -47,7 +47,7 @@ def parse(str)
4747

4848
it do
4949
expect(body).to eq(
50-
'@type': 'request_configs',
50+
'@type': 'request_preview',
5151
'@representation': 'standard',
5252
raw_configs: [
5353
'@type': 'request_raw_configuration',

spec/v3/services/requests/create_spec.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@
136136
branch: 'master',
137137
sha: nil,
138138
merge_mode: nil,
139-
config: nil
139+
config: nil,
140+
configs: nil
140141
}
141142
end
142143

@@ -206,7 +207,7 @@
206207

207208
describe 'overriding config' do
208209
let(:params) { { config: { script: 'true' } } }
209-
it { expect(sidekiq_payload).to eq payload.merge(config: params[:config]) }
210+
it { expect(sidekiq_payload).to eq payload.merge(config: '{"script":"true"}', configs: [config: '{"script":"true"}', merge_mode: nil]) }
210211
end
211212

212213
describe 'overriding message' do

0 commit comments

Comments
 (0)