From 2b2f39ecf3be249d59fed7599062a5ff053fd350 Mon Sep 17 00:00:00 2001
From: Divya <dmahadevan@gitlab.com>
Date: Wed, 19 Jun 2024 14:24:38 +0200
Subject: [PATCH] Ability to check for SM duo pro bulk assignment

---
 .../sm_duo_pro_bulk_user_assignment.yml       |  9 ++++
 .../code_suggestions_helper.rb                |  6 ++-
 .../code_suggestions_helper_spec.rb           | 42 +++++++++++++++++--
 3 files changed, 53 insertions(+), 4 deletions(-)
 create mode 100644 config/feature_flags/development/sm_duo_pro_bulk_user_assignment.yml

diff --git a/config/feature_flags/development/sm_duo_pro_bulk_user_assignment.yml b/config/feature_flags/development/sm_duo_pro_bulk_user_assignment.yml
new file mode 100644
index 0000000000000000..76227f3f9cea08b0
--- /dev/null
+++ b/config/feature_flags/development/sm_duo_pro_bulk_user_assignment.yml
@@ -0,0 +1,9 @@
+---
+name: sm_duo_pro_bulk_user_assignment
+feature_issue_url: https://gitlab.com/groups/gitlab-org/-/epics/12959
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156779
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/443570
+milestone: '17.2'
+group: group::provision
+type: development
+default_enabled: false
diff --git a/ee/app/helpers/gitlab_subscriptions/code_suggestions_helper.rb b/ee/app/helpers/gitlab_subscriptions/code_suggestions_helper.rb
index b8acf61561ad0ed2..9e8d1f8034370f26 100644
--- a/ee/app/helpers/gitlab_subscriptions/code_suggestions_helper.rb
+++ b/ee/app/helpers/gitlab_subscriptions/code_suggestions_helper.rb
@@ -15,7 +15,11 @@ def gitlab_duo_available?(namespace = nil)
     def duo_pro_bulk_user_assignment_available?(namespace = nil)
       return false unless gitlab_duo_available?(namespace)
 
-      Feature.enabled?(:gitlab_com_duo_pro_bulk_user_assignment, namespace) if gitlab_com_subscription?
+      if gitlab_com_subscription?
+        Feature.enabled?(:gitlab_com_duo_pro_bulk_user_assignment, namespace)
+      else
+        Feature.enabled?(:sm_duo_pro_bulk_user_assignment)
+      end
     end
 
     def add_duo_pro_seats_url(subscription_name)
diff --git a/ee/spec/helpers/gitlab_subscriptions/code_suggestions_helper_spec.rb b/ee/spec/helpers/gitlab_subscriptions/code_suggestions_helper_spec.rb
index 010572e9597a6e29..2b4bbb03e7290b1f 100644
--- a/ee/spec/helpers/gitlab_subscriptions/code_suggestions_helper_spec.rb
+++ b/ee/spec/helpers/gitlab_subscriptions/code_suggestions_helper_spec.rb
@@ -120,14 +120,30 @@
       end
     end
 
-    context 'when GitLab is not .com' do
+    context 'when GitLab is self managed' do
       before do
         stub_saas_features(gitlab_com_subscriptions: false)
       end
 
       context 'when duo pro is available' do
-        it 'returns false' do
-          expect(helper.duo_pro_bulk_user_assignment_available?).to be_falsey
+        context 'when sm feature flag is enabled' do
+          before do
+            stub_feature_flags(sm_duo_pro_bulk_user_assignment: true)
+          end
+
+          it 'returns true' do
+            expect(helper.duo_pro_bulk_user_assignment_available?).to be_truthy
+          end
+        end
+
+        context 'when sm feature flag is disabled' do
+          before do
+            stub_feature_flags(sm_duo_pro_bulk_user_assignment: false)
+          end
+
+          it 'returns false' do
+            expect(helper.duo_pro_bulk_user_assignment_available?).to be_falsey
+          end
         end
       end
 
@@ -136,6 +152,26 @@
           stub_feature_flags(self_managed_code_suggestions: false)
         end
 
+        context 'when sm feature flag is enabled' do
+          before do
+            stub_feature_flags(sm_duo_pro_bulk_user_assignment: true)
+          end
+
+          it 'returns false' do
+            expect(helper.duo_pro_bulk_user_assignment_available?).to be_falsey
+          end
+        end
+
+        context 'when sm feature flag is disabled' do
+          before do
+            stub_feature_flags(sm_duo_pro_bulk_user_assignment: false)
+          end
+
+          it 'returns false' do
+            expect(helper.duo_pro_bulk_user_assignment_available?).to be_falsey
+          end
+        end
+
         it 'returns false' do
           expect(helper.duo_pro_bulk_user_assignment_available?).to be_falsey
         end
-- 
GitLab