Commit f490a736 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'mr-origin-863' into 'master'

Resolve ""Send Email to Users" Feature does not respect blocked users"

See merge request !945
parents cb6ffd9c 4723f0cf
...@@ -3,7 +3,7 @@ class AdminEmailsWorker ...@@ -3,7 +3,7 @@ class AdminEmailsWorker
include DedicatedSidekiqQueue include DedicatedSidekiqQueue
def perform(recipient_id, subject, body) 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 Notify.send_admin_notification(user_id, subject, body).deliver_later
end end
end end
...@@ -13,11 +13,11 @@ class AdminEmailsWorker ...@@ -13,11 +13,11 @@ class AdminEmailsWorker
def recipient_list(recipient_id) def recipient_list(recipient_id)
case recipient_id case recipient_id
when 'all' when 'all'
User.subscribed_for_admin_email User.active.subscribed_for_admin_email
when /group-(\d+)\z/ 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/ 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 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,18 +2,39 @@ require 'spec_helper' ...@@ -2,18 +2,39 @@ require 'spec_helper'
describe AdminEmailsWorker do describe AdminEmailsWorker do
context "recipients" do context "recipients" do
let(:recipient_id) { "group-#{group.id}" }
let(:group) { create :group } let(:group) { create :group }
let(:project) { create :project }
before do before do
2.times 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 end
unsubscribed_user = create(:user, admin_email_unsubscribed_at: 5.days.ago) unsubscribed_user = create(:user, admin_email_unsubscribed_at: 5.days.ago)
group.add_user(unsubscribed_user, Gitlab::Access::DEVELOPER) 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 = [] ActionMailer::Base.deliveries = []
end end
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
context "sending emails to members of a project only" do
let(:recipient_id) { "project-#{project.id}" }
it "sends email to subscribed users" do it "sends email to subscribed users" do
perform_enqueued_jobs do perform_enqueued_jobs do
AdminEmailsWorker.new.perform(recipient_id, 'subject', 'body') AdminEmailsWorker.new.perform(recipient_id, 'subject', 'body')
...@@ -21,4 +42,16 @@ describe AdminEmailsWorker do ...@@ -21,4 +42,16 @@ describe AdminEmailsWorker do
end end
end 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 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