aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/test
diff options
context:
space:
mode:
authorIsaac Betesh <iybetesh@gmail.com>2019-05-09 12:38:58 -0700
committerIsaac Betesh <iybetesh@gmail.com>2019-05-21 13:11:19 -0700
commitefeddb08dae3dc6240118444234e3acdcfdffaa1 (patch)
treeb59746f0f24e325f6719995d2ec3ea3ca8d24cc6 /actionmailer/test
parent973096b6ae1f34310316a74e282501357739ac87 (diff)
downloadrails-efeddb08dae3dc6240118444234e3acdcfdffaa1.tar.gz
rails-efeddb08dae3dc6240118444234e3acdcfdffaa1.tar.bz2
rails-efeddb08dae3dc6240118444234e3acdcfdffaa1.zip
Prevent reading inline attachments after `mail` was called from raising an inaccurate exception
Without this change, `attachments.inline['my_attachment'].present?`, for example, would raise the exception `Can't add attachments after mail was called`. I first brought this issue up at https://github.com/rails/rails/issues/16163#issuecomment-437378347. Note that this commit addresses only one of the 2 problems I described in that comment. The other problem is that using `attachments.inline['my_attachment']` for reading an attachment is unnecessary--it's the same as `attachments['my_attachment']`--even before `mail` is called. We could add a warning about the unnecessary use of `inline` but I'm saving that for a later PR since my comment has not received any feedback yet.
Diffstat (limited to 'actionmailer/test')
-rw-r--r--actionmailer/test/base_test.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/actionmailer/test/base_test.rb b/actionmailer/test/base_test.rb
index c07fca5b5e..0bfd12cd3e 100644
--- a/actionmailer/test/base_test.rb
+++ b/actionmailer/test/base_test.rb
@@ -267,6 +267,17 @@ class BaseTest < ActiveSupport::TestCase
assert_match(/Can't add attachments after `mail` was called./, e.message)
end
+ test "accessing inline attachments after mail was called works" do
+ class LateInlineAttachmentMailer < ActionMailer::Base
+ def welcome
+ mail body: "yay", from: "welcome@example.com", to: "to@example.com"
+ attachments.inline["invoice.pdf"]
+ end
+ end
+
+ assert_nothing_raised { LateInlineAttachmentMailer.welcome.message }
+ end
+
test "adding inline attachments while rendering mail works" do
class LateInlineAttachmentMailer < ActionMailer::Base
def on_render