Commit 6b76909c authored by Sean McGivern's avatar Sean McGivern Committed by Lin Jen-Shin

Merge branch 'fix-jobs-enabled-parameter' into 'master'

Replace builds_enabled with jobs_enabled in projects API v4

Closes #31012

See merge request !10786
parent 0385b5b3
---
title: Replace builds_enabled with jobs_enabled in projects API v4
merge_request: 10786
author: winniehell
...@@ -11,7 +11,7 @@ module API ...@@ -11,7 +11,7 @@ module API
optional :issues_enabled, type: Boolean, desc: 'Flag indication if the issue tracker is enabled' optional :issues_enabled, type: Boolean, desc: 'Flag indication if the issue tracker is enabled'
optional :merge_requests_enabled, type: Boolean, desc: 'Flag indication if merge requests are enabled' optional :merge_requests_enabled, type: Boolean, desc: 'Flag indication if merge requests are enabled'
optional :wiki_enabled, type: Boolean, desc: 'Flag indication if the wiki is enabled' optional :wiki_enabled, type: Boolean, desc: 'Flag indication if the wiki is enabled'
optional :builds_enabled, type: Boolean, desc: 'Flag indication if builds are enabled' optional :jobs_enabled, type: Boolean, desc: 'Flag indication if jobs are enabled'
optional :snippets_enabled, type: Boolean, desc: 'Flag indication if snippets are enabled' optional :snippets_enabled, type: Boolean, desc: 'Flag indication if snippets are enabled'
optional :shared_runners_enabled, type: Boolean, desc: 'Flag indication if shared runners are enabled for that project' optional :shared_runners_enabled, type: Boolean, desc: 'Flag indication if shared runners are enabled for that project'
optional :container_registry_enabled, type: Boolean, desc: 'Flag indication if the container registry is enabled for that project' optional :container_registry_enabled, type: Boolean, desc: 'Flag indication if the container registry is enabled for that project'
...@@ -99,6 +99,7 @@ module API ...@@ -99,6 +99,7 @@ module API
end end
post do post do
attrs = declared_params(include_missing: false) attrs = declared_params(include_missing: false)
attrs[:builds_enabled] = attrs.delete(:jobs_enabled) if attrs.has_key?(:jobs_enabled)
project = ::Projects::CreateService.new(current_user, attrs).execute project = ::Projects::CreateService.new(current_user, attrs).execute
if project.saved? if project.saved?
...@@ -203,7 +204,7 @@ module API ...@@ -203,7 +204,7 @@ module API
optional :path, type: String, desc: 'The path of the repository' optional :path, type: String, desc: 'The path of the repository'
use :optional_params use :optional_params
at_least_one_of :name, :description, :issues_enabled, :merge_requests_enabled, at_least_one_of :name, :description, :issues_enabled, :merge_requests_enabled,
:wiki_enabled, :builds_enabled, :snippets_enabled, :wiki_enabled, :jobs_enabled, :snippets_enabled,
:shared_runners_enabled, :container_registry_enabled, :shared_runners_enabled, :container_registry_enabled,
:lfs_enabled, :visibility, :public_builds, :lfs_enabled, :visibility, :public_builds,
:request_access_enabled, :only_allow_merge_if_pipeline_succeeds, :request_access_enabled, :only_allow_merge_if_pipeline_succeeds,
...@@ -216,6 +217,8 @@ module API ...@@ -216,6 +217,8 @@ module API
authorize! :rename_project, user_project if attrs[:name].present? authorize! :rename_project, user_project if attrs[:name].present?
authorize! :change_visibility_level, user_project if attrs[:visibility].present? authorize! :change_visibility_level, user_project if attrs[:visibility].present?
attrs[:builds_enabled] = attrs.delete(:jobs_enabled) if attrs.has_key?(:jobs_enabled)
result = ::Projects::UpdateService.new(user_project, current_user, attrs).execute result = ::Projects::UpdateService.new(user_project, current_user, attrs).execute
if result[:status] == :success if result[:status] == :success
......
...@@ -24,6 +24,7 @@ describe API::Projects, :api do ...@@ -24,6 +24,7 @@ describe API::Projects, :api do
namespace: user.namespace, namespace: user.namespace,
merge_requests_enabled: false, merge_requests_enabled: false,
issues_enabled: false, wiki_enabled: false, issues_enabled: false, wiki_enabled: false,
builds_enabled: false,
snippets_enabled: false) snippets_enabled: false)
end end
let(:project_member3) do let(:project_member3) do
...@@ -342,6 +343,7 @@ describe API::Projects, :api do ...@@ -342,6 +343,7 @@ describe API::Projects, :api do
project = attributes_for(:project, { project = attributes_for(:project, {
path: 'camelCasePath', path: 'camelCasePath',
issues_enabled: false, issues_enabled: false,
jobs_enabled: false,
merge_requests_enabled: false, merge_requests_enabled: false,
wiki_enabled: false, wiki_enabled: false,
only_allow_merge_if_pipeline_succeeds: false, only_allow_merge_if_pipeline_succeeds: false,
...@@ -351,6 +353,8 @@ describe API::Projects, :api do ...@@ -351,6 +353,8 @@ describe API::Projects, :api do
post api('/projects', user), project post api('/projects', user), project
expect(response).to have_http_status(201)
project.each_pair do |k, v| project.each_pair do |k, v|
next if %i[has_external_issue_tracker issues_enabled merge_requests_enabled wiki_enabled].include?(k) next if %i[has_external_issue_tracker issues_enabled merge_requests_enabled wiki_enabled].include?(k)
expect(json_response[k.to_s]).to eq(v) expect(json_response[k.to_s]).to eq(v)
...@@ -1076,10 +1080,21 @@ describe API::Projects, :api do ...@@ -1076,10 +1080,21 @@ describe API::Projects, :api do
before { project_member3 } before { project_member3 }
before { project_member2 } before { project_member2 }
it 'returns 400 when nothing sent' do
project_param = {}
put api("/projects/#{project.id}", user), project_param
expect(response).to have_http_status(400)
expect(json_response['error']).to match('at least one parameter must be provided')
end
context 'when unauthenticated' do context 'when unauthenticated' do
it 'returns authentication error' do it 'returns authentication error' do
project_param = { name: 'bar' } project_param = { name: 'bar' }
put api("/projects/#{project.id}"), project_param put api("/projects/#{project.id}"), project_param
expect(response).to have_http_status(401) expect(response).to have_http_status(401)
end end
end end
...@@ -1087,8 +1102,11 @@ describe API::Projects, :api do ...@@ -1087,8 +1102,11 @@ describe API::Projects, :api do
context 'when authenticated as project owner' do context 'when authenticated as project owner' do
it 'updates name' do it 'updates name' do
project_param = { name: 'bar' } project_param = { name: 'bar' }
put api("/projects/#{project.id}", user), project_param put api("/projects/#{project.id}", user), project_param
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
project_param.each_pair do |k, v| project_param.each_pair do |k, v|
expect(json_response[k.to_s]).to eq(v) expect(json_response[k.to_s]).to eq(v)
end end
...@@ -1096,8 +1114,11 @@ describe API::Projects, :api do ...@@ -1096,8 +1114,11 @@ describe API::Projects, :api do
it 'updates visibility_level' do it 'updates visibility_level' do
project_param = { visibility: 'public' } project_param = { visibility: 'public' }
put api("/projects/#{project3.id}", user), project_param put api("/projects/#{project3.id}", user), project_param
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
project_param.each_pair do |k, v| project_param.each_pair do |k, v|
expect(json_response[k.to_s]).to eq(v) expect(json_response[k.to_s]).to eq(v)
end end
...@@ -1106,17 +1127,23 @@ describe API::Projects, :api do ...@@ -1106,17 +1127,23 @@ describe API::Projects, :api do
it 'updates visibility_level from public to private' do it 'updates visibility_level from public to private' do
project3.update_attributes({ visibility_level: Gitlab::VisibilityLevel::PUBLIC }) project3.update_attributes({ visibility_level: Gitlab::VisibilityLevel::PUBLIC })
project_param = { visibility: 'private' } project_param = { visibility: 'private' }
put api("/projects/#{project3.id}", user), project_param put api("/projects/#{project3.id}", user), project_param
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
project_param.each_pair do |k, v| project_param.each_pair do |k, v|
expect(json_response[k.to_s]).to eq(v) expect(json_response[k.to_s]).to eq(v)
end end
expect(json_response['visibility']).to eq('private') expect(json_response['visibility']).to eq('private')
end end
it 'does not update name to existing name' do it 'does not update name to existing name' do
project_param = { name: project3.name } project_param = { name: project3.name }
put api("/projects/#{project.id}", user), project_param put api("/projects/#{project.id}", user), project_param
expect(response).to have_http_status(400) expect(response).to have_http_status(400)
expect(json_response['message']['name']).to eq(['has already been taken']) expect(json_response['message']['name']).to eq(['has already been taken'])
end end
...@@ -1132,8 +1159,23 @@ describe API::Projects, :api do ...@@ -1132,8 +1159,23 @@ describe API::Projects, :api do
it 'updates path & name to existing path & name in different namespace' do it 'updates path & name to existing path & name in different namespace' do
project_param = { path: project4.path, name: project4.name } project_param = { path: project4.path, name: project4.name }
put api("/projects/#{project3.id}", user), project_param put api("/projects/#{project3.id}", user), project_param
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
project_param.each_pair do |k, v|
expect(json_response[k.to_s]).to eq(v)
end
end
it 'updates jobs_enabled' do
project_param = { jobs_enabled: true }
put api("/projects/#{project3.id}", user), project_param
expect(response).to have_http_status(200)
project_param.each_pair do |k, v| project_param.each_pair do |k, v|
expect(json_response[k.to_s]).to eq(v) expect(json_response[k.to_s]).to eq(v)
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment