Commit 37afc065 authored by Tiago Botelho's avatar Tiago Botelho

Hard failing mirror no longer fails for personal project of a blocked user

parent 87f19344
......@@ -268,13 +268,13 @@ class Group < Namespace
end
GroupMember
.active_without_invites
.active_without_invites_and_requests
.where(source_id: source_ids)
end
def members_with_descendants
GroupMember
.active_without_invites
.active_without_invites_and_requests
.where(source_id: self_and_descendants.reorder(nil).select(:id))
end
......
......@@ -53,7 +53,7 @@ class Member < ActiveRecord::Base
end
# Like active, but without invites. For when a User is required.
scope :active_without_invites, -> do
scope :active_without_invites_and_requests, -> do
left_join_users
.where(users: { state: 'active' })
.non_request
......
......@@ -231,9 +231,9 @@ class NotificationService
def new_access_request(member)
return true unless member.notifiable?(:subscription)
recipients = member.source.members.active_without_invites.owners_and_masters
recipients = member.source.members.active_without_invites_and_requests.owners_and_masters
if fallback_to_group_owners_masters?(recipients, member)
recipients = member.source.group.members.active_without_invites.owners_and_masters
recipients = member.source.group.members.active_without_invites_and_requests.owners_and_masters
end
recipients.each { |recipient| deliver_access_request_email(recipient, member) }
......
......@@ -24,10 +24,10 @@ module EE
end
def mirror_was_hard_failed(project)
recipients = project.members.active_without_invites.owners_and_masters
recipients = project.members.active_without_invites_and_requests.owners_and_masters
unless recipients.present?
recipients = project.group.members.active_without_invites.owners_and_masters
if recipients.empty? && project.group
recipients = project.group.members.active_without_invites_and_requests.owners_and_masters
end
recipients.each do |recipient|
......
---
title: Hard failing a mirror no longer fails for a blocked user's personal project
merge_request: 5063
author:
type: fixed
......@@ -142,6 +142,34 @@ describe EE::NotificationService, :mailer do
subject.mirror_was_hard_failed(project)
end
context 'when owner is blocked' do
it 'does not send email' do
project = create(:project, :mirror, :import_hard_failed)
project.owner.block!
expect(Notify).not_to receive(:mirror_was_hard_failed_email)
subject.mirror_was_hard_failed(project)
end
context 'when project belongs to group' do
it 'does not send email to the blocked owner' do
blocked_user = create(:user, :blocked)
group = create(:group, :public)
group.add_owner(blocked_user)
group.add_owner(user)
project = create(:project, :mirror, :import_hard_failed, namespace: group)
expect(Notify).not_to receive(:mirror_was_hard_failed_email).with(project.id, blocked_user.id).and_call_original
expect(Notify).to receive(:mirror_was_hard_failed_email).with(project.id, user.id).and_call_original
subject.mirror_was_hard_failed(project)
end
end
end
end
context 'when user is master' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment