diff --git a/ee/app/services/security/security_orchestration_policies/fetch_policy_approvers_service.rb b/ee/app/services/security/security_orchestration_policies/fetch_policy_approvers_service.rb index 40aa13b6596a591aceec0e17e586ae31c8714c52..6f81cfc42d6d388574f60bb46378203c800043b9 100644 --- a/ee/app/services/security/security_orchestration_policies/fetch_policy_approvers_service.rb +++ b/ee/app/services/security/security_orchestration_policies/fetch_policy_approvers_service.rb @@ -7,8 +7,8 @@ class FetchPolicyApproversService def initialize(policy:, container:, current_user:) @policy = policy - @container = container @current_user = current_user + @container = container.is_a?(ComplianceManagement::Framework) ? container.namespace : container end def execute diff --git a/ee/spec/services/security/security_orchestration_policies/fetch_policy_approvers_service_spec.rb b/ee/spec/services/security/security_orchestration_policies/fetch_policy_approvers_service_spec.rb index fa10e152f1f2c81d71c2af85e61045eed1aea65f..9e3a4aa3b125eaa8e498cb280d88fd14668fc998 100644 --- a/ee/spec/services/security/security_orchestration_policies/fetch_policy_approvers_service_spec.rb +++ b/ee/spec/services/security/security_orchestration_policies/fetch_policy_approvers_service_spec.rb @@ -44,6 +44,19 @@ expect(response[:all_groups]).to be_empty end + context 'with container of compliance framework type' do + let(:container) { create(:compliance_framework, namespace: group) } + + it 'returns user approvers' do + response = service.execute + + expect(response[:status]).to eq(:success) + expect(response[:users]).to match_array([user]) + expect(response[:groups]).to be_empty + expect(response[:all_groups]).to be_empty + end + end + context 'with container of a group type' do let(:container) { group } @@ -99,6 +112,19 @@ expect(response[:users]).to be_empty end + context 'with container of compliance framework type' do + let(:container) { create(:compliance_framework, namespace: group) } + + it 'returns group approvers' do + response = service.execute + + expect(response[:status]).to eq(:success) + expect(response[:groups]).to match_array([group]) + expect(response[:all_groups]).to match_array([group]) + expect(response[:users]).to be_empty + end + end + context 'when groups with same name exist in and outside of container' do let_it_be(:other_container) { create(:group) } let_it_be(:other_group) { create(:group, name: group.name, parent: other_container) }