aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/action_mailroom/mailbox.rb4
-rw-r--r--test/unit/mailbox/state_test.rb14
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/action_mailroom/mailbox.rb b/lib/action_mailroom/mailbox.rb
index de02e56f13..936054810f 100644
--- a/lib/action_mailroom/mailbox.rb
+++ b/lib/action_mailroom/mailbox.rb
@@ -8,7 +8,7 @@ class ActionMailroom::Mailbox
include Callbacks, Routing
attr_reader :inbound_email
- delegate :mail, to: :inbound_email
+ delegate :mail, :bounced!, to: :inbound_email
def self.receive(inbound_email)
new(inbound_email).perform_processing
@@ -37,7 +37,7 @@ class ActionMailroom::Mailbox
def track_status_of_inbound_email
inbound_email.processing!
yield
- inbound_email.delivered!
+ inbound_email.delivered! unless inbound_email.bounced?
rescue => exception
inbound_email.failed!
raise
diff --git a/test/unit/mailbox/state_test.rb b/test/unit/mailbox/state_test.rb
index de9da54d3f..6215e02837 100644
--- a/test/unit/mailbox/state_test.rb
+++ b/test/unit/mailbox/state_test.rb
@@ -14,6 +14,14 @@ class UnsuccessfulMailbox < ActionMailroom::Mailbox
end
end
+class BouncingMailbox < ActionMailroom::Mailbox
+ def process
+ $processed = :bounced
+ bounced!
+ end
+end
+
+
class ActionMailroom::Mailbox::StateTest < ActiveSupport::TestCase
setup do
$processed = false
@@ -32,4 +40,10 @@ class ActionMailroom::Mailbox::StateTest < ActiveSupport::TestCase
assert @inbound_email.failed?
assert_equal :failure, $processed
end
+
+ test "bounced inbound emails are not delivered" do
+ BouncingMailbox.receive @inbound_email
+ assert @inbound_email.bounced?
+ assert_equal :bounced, $processed
+ end
end