Commit 4723f0cf authored by Matt Lee's avatar Matt Lee Committed by mattl

Do not send emails to users who are inactive from the EE admin panel

parent 22b0091e
......@@ -3,7 +3,7 @@ class AdminEmailsWorker
include DedicatedSidekiqQueue
def perform(recipient_id, subject, body)
recipient_list(recipient_id).pluck(:id).each do |user_id|
recipient_list(recipient_id).pluck(:id).uniq.each do |user_id|
Notify.send_admin_notification(user_id, subject, body).deliver_later
end
end
......@@ -13,11 +13,11 @@ class AdminEmailsWorker
def recipient_list(recipient_id)
case recipient_id
when 'all'
User.subscribed_for_admin_email
User.active.subscribed_for_admin_email
when /group-(\d+)\z/
Group.find($1).users.subscribed_for_admin_email
Group.find($1).users.merge(Member.active).subscribed_for_admin_email
when /project-(\d+)\z/
Project.find($1).team.users.subscribed_for_admin_email
Project.find($1).team.users.references(:members).merge(Member.active).subscribed_for_admin_email
end
end
end
---
title: Adds a check ensure only active, ie. non-blocked users can be emailed from
the admin panel
merge_request:
author:
......@@ -2,23 +2,56 @@ require 'spec_helper'
describe AdminEmailsWorker do
context "recipients" do
let(:recipient_id) { "group-#{group.id}" }
let(:group) { create :group }
let(:project) { create :project }
before do
2.times do
group.add_user(create(:user), Gitlab::Access::DEVELOPER)
user = create(:user)
group.add_user(user, Gitlab::Access::DEVELOPER)
project.add_user(user, Gitlab::Access::DEVELOPER)
end
unsubscribed_user = create(:user, admin_email_unsubscribed_at: 5.days.ago)
group.add_user(unsubscribed_user, Gitlab::Access::DEVELOPER)
project.add_user(unsubscribed_user, Gitlab::Access::DEVELOPER)
blocked_user = create(:user, state: :blocked)
group.add_user(blocked_user, Gitlab::Access::DEVELOPER)
project.add_user(blocked_user, Gitlab::Access::DEVELOPER)
ActionMailer::Base.deliveries = []
end
it "sends email to subscribed users" do
perform_enqueued_jobs do
AdminEmailsWorker.new.perform(recipient_id, 'subject', 'body')
expect(ActionMailer::Base.deliveries.count).to eql 2
context "sending emails to members of a group only" do
let(:recipient_id) { "group-#{group.id}" }
it "sends email to subscribed users" do
perform_enqueued_jobs do
AdminEmailsWorker.new.perform(recipient_id, 'subject', 'body')
expect(ActionMailer::Base.deliveries.count).to eql 2
end
end
end
end
context "sending emails to members of a project only" do
let(:recipient_id) { "project-#{project.id}" }
it "sends email to subscribed users" do
perform_enqueued_jobs do
AdminEmailsWorker.new.perform(recipient_id, 'subject', 'body')
expect(ActionMailer::Base.deliveries.count).to eql 2
end
end
end
context "sending emails to users directly" do
let(:recipient_id) { "all" }
it "sends email to subscribed users" do
perform_enqueued_jobs do
AdminEmailsWorker.new.perform(recipient_id, 'subject', 'body')
expect(ActionMailer::Base.deliveries.count).to eql 4
end
end
end
end
end
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