From 0cc1dae6772db56e7f186779e21c477d45b91136 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 23 Feb 2021 19:27:04 -0600 Subject: [PATCH] Fix #4725: Don't mark as spam DMails sent by an user to themselves. --- app/models/dmail.rb | 2 +- test/unit/dmail_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/dmail.rb b/app/models/dmail.rb index 1d55f878e..8a1eb81d6 100644 --- a/app/models/dmail.rb +++ b/app/models/dmail.rb @@ -165,7 +165,7 @@ class Dmail < ApplicationRecord end def autoreport_spam - if is_recipient? && SpamDetector.new(self).spam? + if is_recipient? && !is_sender? && SpamDetector.new(self).spam? self.is_deleted = true moderation_reports << ModerationReport.new(creator: User.system, reason: "Spam.") end diff --git a/test/unit/dmail_test.rb b/test/unit/dmail_test.rb index 141fd8fee..ec4458e13 100644 --- a/test/unit/dmail_test.rb +++ b/test/unit/dmail_test.rb @@ -23,6 +23,16 @@ class DmailTest < ActiveSupport::TestCase assert_equal(1, dmail.moderation_reports.count) assert_equal(true, dmail.reload.is_deleted?) end + + should "not mark dmails sent to oneself as spam" do + @user = create(:user, created_at: 2.weeks.ago, email_address: build(:email_address, address: "akismet-guaranteed-spam@example.com")) + + SpamDetector.stubs(:enabled?).returns(true) + dmail = create(:dmail, owner: @user, from: @user, to: @user, creator_ip_addr: "127.0.0.1") + + assert_equal(0, dmail.moderation_reports.count) + assert_equal(false, dmail.reload.is_deleted?) + end end context "search" do