diff options
-rw-r--r-- | lib/action_mailbox/base.rb | 5 | ||||
-rw-r--r-- | test/test_helper.rb | 8 | ||||
-rw-r--r-- | test/unit/mailbox/bouncing_test.rb | 29 |
3 files changed, 42 insertions, 0 deletions
diff --git a/lib/action_mailbox/base.rb b/lib/action_mailbox/base.rb index ce1aec01a9..66a3b7fd32 100644 --- a/lib/action_mailbox/base.rb +++ b/lib/action_mailbox/base.rb @@ -35,6 +35,11 @@ class ActionMailbox::Base # Overwrite in subclasses end + def bounce_with(message) + inbound_email.bounced! + message.deliver_later + end + private def track_status_of_inbound_email inbound_email.processing! diff --git a/test/test_helper.rb b/test/test_helper.rb index b042cfb679..264f9e8482 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -32,3 +32,11 @@ if ARGV.include?("-v") ActiveRecord::Base.logger = Logger.new(STDOUT) ActiveJob::Base.logger = Logger.new(STDOUT) end + +class BounceMailer < ActionMailer::Base + def bounce(to:) + mail from: "receiver@example.com", to: to, subject: "Your email was not delivered" do |format| + format.html { render plain: "Sorry!" } + end + end +end diff --git a/test/unit/mailbox/bouncing_test.rb b/test/unit/mailbox/bouncing_test.rb new file mode 100644 index 0000000000..6ac806ba29 --- /dev/null +++ b/test/unit/mailbox/bouncing_test.rb @@ -0,0 +1,29 @@ +require_relative '../../test_helper' + +class BouncingWithReplyMailbox < ActionMailbox::Base + def process + bounce_with BounceMailer.bounce(to: mail.from) + end +end + +class ActionMailbox::Base::BouncingTest < ActiveSupport::TestCase + include ActionMailer::TestHelper + + setup do + @inbound_email = create_inbound_email_from_mail \ + from: "sender@example.com", to: "replies@example.com", subject: "Bounce me" + end + + test "bouncing with a reply" do + perform_enqueued_jobs only: ActionMailer::DeliveryJob do + BouncingWithReplyMailbox.receive @inbound_email + end + + assert @inbound_email.bounced? + assert_emails 1 + + mail = ActionMailer::Base.deliveries.last + assert_equal %w[ sender@example.com ], mail.to + assert_equal "Your email was not delivered", mail.subject + end +end |