Commit a8e29934 authored by Mark Chao's avatar Mark Chao

Update project's fallback_approvals_required

Use existing project PUT to update
parent 6054912f
......@@ -120,6 +120,8 @@ module EE
accepts_nested_attributes_for :tracing_setting, update_only: true, allow_destroy: true
accepts_nested_attributes_for :alerting_setting, update_only: true
alias_attribute :fallback_approvals_required, :approvals_before_merge
end
class_methods do
......
......@@ -22,29 +22,6 @@ module API
present user_project, with: EE::API::Entities::ProjectApprovalRules, current_user: current_user
end
desc 'Update fallback approvals required' do
detail 'Private API subject to change'
success ::API::Entities::Project
end
params do
requires :fallback_approvals_required, as: :approvals_before_merge, type: Integer, desc: 'The total number of required approvals in case of fallback'
end
put do
authorize! :admin_project, user_project
result = ::Projects::UpdateService.new(user_project, current_user, declared_params).execute
if result[:status] == :success
present(
user_project,
with: ::API::Entities::Project,
user_can_admin_project: can?(current_user, :admin_project, user_project)
)
else
render_validation_error!(user_project)
end
end
segment 'rules' do
desc 'Create new approval rule' do
detail 'Private API subject to change'
......
......@@ -20,6 +20,7 @@ module EE
optional :mirror_overwrites_diverged_branches, type: Grape::API::Boolean, desc: 'Pull mirror overwrites diverged branches'
optional :import_url, type: String, desc: 'URL from which the project is imported'
optional :packages_enabled, type: Grape::API::Boolean, desc: 'Enable project packages feature'
optional :fallback_approvals_required, type: Integer, desc: 'Overall approvals required when no rule is present'
end
def apply_filters(projects)
......
......@@ -74,42 +74,6 @@ describe API::ProjectApprovalRules do
end
end
describe 'PUT /projects/:id/approval_settings' do
let(:url) { "/projects/#{project.id}/approval_settings" }
shared_examples_for 'a user with access' do
context 'when sending json data' do
it 'updates approvals_before_merge' do
expect do
put api(url, current_user), params: { fallback_approvals_required: 1 }.to_json, headers: { CONTENT_TYPE: 'application/json' }
end.to change { project.reload.approvals_before_merge }.from(0).to(1)
expect(response).to have_gitlab_http_status(200)
end
end
end
context 'as a project admin' do
it_behaves_like 'a user with access' do
let(:current_user) { user }
end
end
context 'as a global admin' do
it_behaves_like 'a user with access' do
let(:current_user) { admin }
end
end
context 'as a random user' do
it 'returns 403' do
put api(url, user2), { fallback_approvals_required: 1 }.to_json, { CONTENT_TYPE: 'application/json' }
expect(response).to have_gitlab_http_status(403)
end
end
end
describe 'POST /projects/:id/approval_settings/rules' do
let(:current_user) { user }
let(:params) do
......
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