diff --git a/ee/changelogs/unreleased/9496-add-enable-self-approval-of-merge-requests-setting-to-merge-request-approvals-api.yml b/ee/changelogs/unreleased/9496-add-enable-self-approval-of-merge-requests-setting-to-merge-request-approvals-api.yml new file mode 100644 index 0000000000000000000000000000000000000000..a2d9c05a462e7c4b95874999e17f2111e21e4235 --- /dev/null +++ b/ee/changelogs/unreleased/9496-add-enable-self-approval-of-merge-requests-setting-to-merge-request-approvals-api.yml @@ -0,0 +1,5 @@ +--- +title: Add self approval of merge requests setting to merge requests approvals API +merge_request: 10050 +author: +type: changed diff --git a/ee/lib/api/project_approvals.rb b/ee/lib/api/project_approvals.rb index 117025345d698b83ca15ca3345c3b80e167ef943..8d8eaa2c7ea1fdf093ff6ee8f51b833a9da2090c 100644 --- a/ee/lib/api/project_approvals.rb +++ b/ee/lib/api/project_approvals.rb @@ -28,7 +28,8 @@ class ProjectApprovals < ::Grape::API optional :approvals_before_merge, type: Integer, desc: 'The amount of approvals required before an MR can be merged' optional :reset_approvals_on_push, type: Boolean, desc: 'Should the approval count be reset on a new push' optional :disable_overriding_approvers_per_merge_request, type: Boolean, desc: 'Should MRs be able to override approvers and approval count' - at_least_one_of :approvals_before_merge, :reset_approvals_on_push, :disable_overriding_approvers_per_merge_request + optional :merge_requests_author_approval, type: Boolean, desc: 'Should authors be able to self approve merge requests' + at_least_one_of :approvals_before_merge, :reset_approvals_on_push, :disable_overriding_approvers_per_merge_request, :merge_requests_author_approval end post '/' do project_params = declared(params, include_missing: false, include_parent_namespaces: false) diff --git a/ee/lib/ee/api/entities.rb b/ee/lib/ee/api/entities.rb index 7e1afb9617195ac1e592ed0fb5371cffd720ee68..2ba4df06c2e3547f937553ec2f56f6cf7c00ed10 100644 --- a/ee/lib/ee/api/entities.rb +++ b/ee/lib/ee/api/entities.rb @@ -324,6 +324,7 @@ class ApprovalSettings < Grape::Entity expose :approvals_before_merge expose :reset_approvals_on_push expose :disable_overriding_approvers_per_merge_request + expose :merge_requests_author_approval end class Approvals < Grape::Entity diff --git a/ee/spec/fixtures/api/schemas/public_api/v4/project_approvers.json b/ee/spec/fixtures/api/schemas/public_api/v4/project_approvers.json index 3e0ccfa897eb3241551e8376cbea42378511d13c..ec2b7b0b77cb5e3b89e00d116862beeabfb16321 100644 --- a/ee/spec/fixtures/api/schemas/public_api/v4/project_approvers.json +++ b/ee/spec/fixtures/api/schemas/public_api/v4/project_approvers.json @@ -4,6 +4,7 @@ "approvals_before_merge": { "type": "integer" }, "disable_overriding_approvers_per_merge_request": { "type": ["boolean", "null"] }, "reset_approvals_on_push": { "type": "boolean" }, + "merge_requests_author_approval": { "type": ["boolean", "null"] }, "approvers": { "type": "array", "items": { diff --git a/ee/spec/requests/api/project_approvals_spec.rb b/ee/spec/requests/api/project_approvals_spec.rb index c2af2068014974168e89a716ee07a4e7768f3216..9335b06f6e18006c2b66c3afc934687568c4a56d 100644 --- a/ee/spec/requests/api/project_approvals_spec.rb +++ b/ee/spec/requests/api/project_approvals_spec.rb @@ -70,12 +70,14 @@ project.approvals_before_merge = 2 project.reset_approvals_on_push = false project.disable_overriding_approvers_per_merge_request = true + project.merge_requests_author_approval = false project.save settings = { approvals_before_merge: 4, reset_approvals_on_push: true, - disable_overriding_approvers_per_merge_request: false + disable_overriding_approvers_per_merge_request: false, + merge_requests_author_approval: true } post api(url, current_user), params: settings