FEATURE: support disabling emails for non-staff users

This commit is contained in:
Arpit Jalan
2018-06-07 09:44:35 +05:30
parent d556975cdc
commit f9ab3848ed
15 changed files with 69 additions and 25 deletions

View File

@ -3,18 +3,41 @@ require 'email/sender'
describe Email::Sender do
it "doesn't deliver mail when mails are disabled" do
SiteSetting.disable_emails = true
Mail::Message.any_instance.expects(:deliver_now).never
message = Mail::Message.new(to: "hello@world.com" , body: "hello")
expect(Email::Sender.new(message, :hello).send).to eq(nil)
end
context "disable_emails is enabled" do
let(:user) { Fabricate(:user) }
let(:moderator) { Fabricate(:moderator) }
it "delivers mail when mails are disabled but the email_type is admin_login" do
SiteSetting.disable_emails = true
Mail::Message.any_instance.expects(:deliver_now).once
message = Mail::Message.new(to: "hello@world.com" , body: "hello")
Email::Sender.new(message, :admin_login).send
context "disable_emails is enabled for everyone" do
before { SiteSetting.disable_emails = "yes" }
it "doesn't deliver mail when mails are disabled" do
Mail::Message.any_instance.expects(:deliver_now).never
message = Mail::Message.new(to: moderator.email , body: "hello")
expect(Email::Sender.new(message, :hello).send).to eq(nil)
end
it "delivers mail when mails are disabled but the email_type is admin_login" do
Mail::Message.any_instance.expects(:deliver_now).once
message = Mail::Message.new(to: moderator.email , body: "hello")
Email::Sender.new(message, :admin_login).send
end
end
context "disable_emails is enabled for non-staff users" do
before { SiteSetting.disable_emails = "non-staff" }
it "doesn't deliver mail to normal user" do
Mail::Message.any_instance.expects(:deliver_now).never
message = Mail::Message.new(to: user.email, body: "hello")
expect(Email::Sender.new(message, :hello).send).to eq(nil)
end
it "delivers mail to staff user" do
Mail::Message.any_instance.expects(:deliver_now).once
message = Mail::Message.new(to: moderator.email, body: "hello")
Email::Sender.new(message, :hello).send
end
end
end
it "doesn't deliver mail when the message is of type NullMail" do