Allow dot in branch name in trigger/builds endpoint in API
This commit is contained in:
parent
9bfff603fe
commit
de518e1247
5 changed files with 49 additions and 17 deletions
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Fix trigger webhook for ref with a dot
|
||||
merge_request: 10001
|
||||
author: George Andrinopoulos
|
|
@ -14,7 +14,7 @@ module API
|
|||
requires :token, type: String, desc: 'The unique token of trigger'
|
||||
optional :variables, type: Hash, desc: 'The list of variables to be injected into build'
|
||||
end
|
||||
post ":id/(ref/:ref/)trigger/pipeline" do
|
||||
post ":id/(ref/:ref/)trigger/pipeline", requirements: { ref: /.+/ } do
|
||||
project = find_project(params[:id])
|
||||
trigger = Ci::Trigger.find_by_token(params[:token].to_s)
|
||||
not_found! unless project && trigger
|
||||
|
|
|
@ -15,7 +15,7 @@ module API
|
|||
requires :token, type: String, desc: 'The unique token of trigger'
|
||||
optional :variables, type: Hash, desc: 'The list of variables to be injected into build'
|
||||
end
|
||||
post ":id/(ref/:ref/)trigger/builds" do
|
||||
post ":id/(ref/:ref/)trigger/builds", requirements: { ref: /.+/ } do
|
||||
project = find_project(params[:id])
|
||||
trigger = Ci::Trigger.find_by_token(params[:token].to_s)
|
||||
not_found! unless project && trigger
|
||||
|
|
|
@ -59,14 +59,6 @@ describe API::Triggers do
|
|||
expect(pipeline.builds.size).to eq(5)
|
||||
end
|
||||
|
||||
it 'creates builds on webhook from other gitlab repository and branch' do
|
||||
expect do
|
||||
post api("/projects/#{project.id}/ref/master/trigger/pipeline?token=#{trigger_token}"), { ref: 'refs/heads/other-branch' }
|
||||
end.to change(project.builds, :count).by(5)
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
end
|
||||
|
||||
it 'returns bad request with no pipeline created if there\'s no commit for that ref' do
|
||||
post api("/projects/#{project.id}/trigger/pipeline"), options.merge(ref: 'other-branch')
|
||||
|
||||
|
@ -101,6 +93,28 @@ describe API::Triggers do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when triggering a pipeline from a trigger token' do
|
||||
it 'creates builds from the ref given in the URL, not in the body' do
|
||||
expect do
|
||||
post api("/projects/#{project.id}/ref/master/trigger/pipeline?token=#{trigger_token}"), { ref: 'refs/heads/other-branch' }
|
||||
end.to change(project.builds, :count).by(5)
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
end
|
||||
|
||||
context 'when ref contains a dot' do
|
||||
it 'creates builds from the ref given in the URL, not in the body' do
|
||||
project.repository.create_file(user, '.gitlab/gitlabhq/new_feature.md', 'something valid', message: 'new_feature', branch_name: 'v.1-branch')
|
||||
|
||||
expect do
|
||||
post api("/projects/#{project.id}/ref/v.1-branch/trigger/pipeline?token=#{trigger_token}"), { ref: 'refs/heads/other-branch' }
|
||||
end.to change(project.builds, :count).by(4)
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /projects/:id/triggers' do
|
||||
|
|
|
@ -51,13 +51,6 @@ describe API::V3::Triggers do
|
|||
expect(pipeline.builds.size).to eq(5)
|
||||
end
|
||||
|
||||
it 'creates builds on webhook from other gitlab repository and branch' do
|
||||
expect do
|
||||
post v3_api("/projects/#{project.id}/ref/master/trigger/builds?token=#{trigger_token}"), { ref: 'refs/heads/other-branch' }
|
||||
end.to change(project.builds, :count).by(5)
|
||||
expect(response).to have_http_status(201)
|
||||
end
|
||||
|
||||
it 'returns bad request with no builds created if there\'s no commit for that ref' do
|
||||
post v3_api("/projects/#{project.id}/trigger/builds"), options.merge(ref: 'other-branch')
|
||||
expect(response).to have_http_status(400)
|
||||
|
@ -89,6 +82,27 @@ describe API::V3::Triggers do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when triggering a pipeline from a trigger token' do
|
||||
it 'creates builds from the ref given in the URL, not in the body' do
|
||||
expect do
|
||||
post v3_api("/projects/#{project.id}/ref/master/trigger/builds?token=#{trigger_token}"), { ref: 'refs/heads/other-branch' }
|
||||
end.to change(project.builds, :count).by(5)
|
||||
expect(response).to have_http_status(201)
|
||||
end
|
||||
|
||||
context 'when ref contains a dot' do
|
||||
it 'creates builds from the ref given in the URL, not in the body' do
|
||||
project.repository.create_file(user, '.gitlab/gitlabhq/new_feature.md', 'something valid', message: 'new_feature', branch_name: 'v.1-branch')
|
||||
|
||||
expect do
|
||||
post v3_api("/projects/#{project.id}/ref/v.1-branch/trigger/builds?token=#{trigger_token}"), { ref: 'refs/heads/other-branch' }
|
||||
end.to change(project.builds, :count).by(4)
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /projects/:id/triggers' do
|
||||
|
|
Loading…
Reference in a new issue