From d8d20ee97297970f58aa4c1e288d9ce05bd2daf2 Mon Sep 17 00:00:00 2001 From: "j.seto" Date: Fri, 6 Jun 2025 16:29:46 -0400 Subject: [PATCH 1/2] Configure web_based_commit_signing_enabled with group update endpoint EE: true Changelog: added --- ee/lib/ee/api/entities/group.rb | 5 ++++ ee/lib/ee/api/helpers/groups_helpers.rb | 3 +++ ee/spec/lib/ee/api/entities/group_spec.rb | 15 +++++++++++- ee/spec/requests/api/groups_spec.rb | 30 +++++++++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/ee/lib/ee/api/entities/group.rb b/ee/lib/ee/api/entities/group.rb index e1463a04cc60f9..534501d8703df0 100644 --- a/ee/lib/ee/api/entities/group.rb +++ b/ee/lib/ee/api/entities/group.rb @@ -54,6 +54,11 @@ module Group group.licensed_ai_features_available? && Ability.allowed?(options[:current_user], :admin_group, group) } + expose :web_based_commit_signing_enabled, + if: ->(group, options) { + ::Gitlab::Saas.feature_available?(:repositories_web_based_commit_signing) && + Ability.allowed?(options[:current_user], :admin_group, group) + } end end end diff --git a/ee/lib/ee/api/helpers/groups_helpers.rb b/ee/lib/ee/api/helpers/groups_helpers.rb index d20cb403d557ca..f34a8d57aac32f 100644 --- a/ee/lib/ee/api/helpers/groups_helpers.rb +++ b/ee/lib/ee/api/helpers/groups_helpers.rb @@ -64,6 +64,9 @@ module GroupsHelpers optional :lock_duo_features_enabled, type: ::Grape::API::Boolean, desc: "Indicates if the GitLab Duo features enabled setting is enforced for all subgroups" + optional :web_based_commit_signing_enabled, + type: ::Grape::API::Boolean, + desc: 'Enable web based commit signing for this group' end params :optional_projects_params_ee do diff --git a/ee/spec/lib/ee/api/entities/group_spec.rb b/ee/spec/lib/ee/api/entities/group_spec.rb index 1d9a71b6a4a0b6..12052734a6bd28 100644 --- a/ee/spec/lib/ee/api/entities/group_spec.rb +++ b/ee/spec/lib/ee/api/entities/group_spec.rb @@ -23,7 +23,8 @@ :file_template_project_id, :duo_core_features_enabled, :duo_features_enabled, - :lock_duo_features_enabled + :lock_duo_features_enabled, + :web_based_commit_signing_enabled ) end @@ -103,6 +104,18 @@ ) end end + + context 'and the repositories_web_based_commit_signing feature is available' do + before do + stub_saas_features(repositories_web_based_commit_signing: true) + end + + it 'returns expected data' do + expect(json.keys).to include( + :web_based_commit_signing_enabled + ) + end + end end end end diff --git a/ee/spec/requests/api/groups_spec.rb b/ee/spec/requests/api/groups_spec.rb index 4339fe403fac08..ab61d50309a484 100644 --- a/ee/spec/requests/api/groups_spec.rb +++ b/ee/spec/requests/api/groups_spec.rb @@ -681,6 +681,36 @@ expect(response).to have_gitlab_http_status(:ok) end end + + context 'web_based_commit_signing_enabled' do + using RSpec::Parameterized::TableSyntax + context 'when authenticated as group owner' do + where(:feature_available, :feature_enabled, :result) do + true | false | false + true | true | true + false | true | nil + false | false | nil + end + + with_them do + let(:params) { { web_based_commit_signing_enabled: true } } + + before do + group.add_owner(user) + + stub_saas_features(repositories_web_based_commit_signing: feature_available) + stub_feature_flags(use_web_based_commit_signing_enabled: feature_enabled) + end + + it 'updates the attribute as expected' do + subject + + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['web_based_commit_signing_enabled']).to eq(result) + end + end + end + end end describe "POST /groups" do -- GitLab From 2fd2384e4de979ae1d0843393ae2608f72670515 Mon Sep 17 00:00:00 2001 From: "j.seto" Date: Wed, 11 Jun 2025 14:34:00 -0400 Subject: [PATCH 2/2] Regenerate OpenAPI documentation --- doc/api/openapi/openapi_v2.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/api/openapi/openapi_v2.yaml b/doc/api/openapi/openapi_v2.yaml index a8206c01ef1985..cbd86d9621e142 100644 --- a/doc/api/openapi/openapi_v2.yaml +++ b/doc/api/openapi/openapi_v2.yaml @@ -44380,6 +44380,8 @@ definitions: type: string lock_duo_features_enabled: type: string + web_based_commit_signing_enabled: + type: string description: API_Entities_Group model API_Entities_Namespace_RootStorageStatistics: type: object @@ -44933,6 +44935,9 @@ definitions: type: boolean description: Indicates if the GitLab Duo features enabled setting is enforced for all subgroups + web_based_commit_signing_enabled: + type: boolean + description: Enable web based commit signing for this group description: Update a group. Available only for users who can administrate groups. API_Entities_GroupDetail: type: object @@ -45049,6 +45054,8 @@ definitions: type: string lock_duo_features_enabled: type: string + web_based_commit_signing_enabled: + type: string shared_with_groups: type: string runners_token: -- GitLab