diff --git a/ee/app/services/ee/members/create_service.rb b/ee/app/services/ee/members/create_service.rb index 6808a68a336521e6c5a949d7ccc558d92f25532d..882532d39e1dfe248e306dd57c675387722afdb4 100644 --- a/ee/app/services/ee/members/create_service.rb +++ b/ee/app/services/ee/members/create_service.rb @@ -70,6 +70,9 @@ def check_seats! def notify_owners(invites) root_namespace = source.root_ancestor + + return if root_namespace.owners.include?(current_user) + invited_user_ids = invites.select { |i| i.to_i.to_s == i } return if invited_user_ids.empty? diff --git a/ee/spec/services/ee/members/create_service_spec.rb b/ee/spec/services/ee/members/create_service_spec.rb index fcd5e6799d608804da2e84c5a0dde1a9a7133917..c9f4db0180edd4a6f74f171e30a44cac845c4a5e 100644 --- a/ee/spec/services/ee/members/create_service_spec.rb +++ b/ee/spec/services/ee/members/create_service_spec.rb @@ -301,11 +301,9 @@ end context 'with block seat overages enabled', :saas do - let_it_be(:owner) { create(:user) } let_it_be(:user) { create(:user) } - let_it_be(:group) do - create(:group_with_plan, plan: :premium_plan).tap { |g| g.add_owner(owner) } - end + let_it_be(:owner) { create(:user) } + let_it_be(:group) { create(:group_with_plan, plan: :premium_plan) } let_it_be(:project) { create(:project, group: group) } @@ -315,7 +313,7 @@ before do stub_saas_features(gitlab_com_subscriptions: true) - stub_feature_flags(block_seat_overages: true) + group.add_owner(owner) group.gitlab_subscription.update!(seats: 1) end @@ -326,6 +324,20 @@ execute_service end + context 'when current user is the owner' do + let_it_be(:owner) { user } + let_it_be(:group) { create(:group_with_plan, plan: :premium_plan) } + let_it_be(:project) { create(:project, group: group) } + + let(:invites) { create(:user).id.to_s } + + it 'does not notify the admin about the requested membership' do + expect(::Notify).not_to receive(:no_more_seats) + + execute_service + end + end + context 'with invited emails' do let(:invites) { ['email@example.com'] }