aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/test/delivery_methods_test.rb
diff options
context:
space:
mode:
authorAditya Sanghi <aditya.sanghi@risingsuntech.net>2012-08-20 18:52:12 +0530
committerAditya Sanghi <aditya.sanghi@risingsuntech.net>2012-09-04 22:34:41 +0530
commit8fc8763fde2cc685ed63fcf640cfae556252809b (patch)
tree4b76a5b82cbd657953bc4e2444a390c311a6601e /actionmailer/test/delivery_methods_test.rb
parent27acd1e0d29c43dddd9c62b041a16c6e71e7bcf4 (diff)
downloadrails-8fc8763fde2cc685ed63fcf640cfae556252809b.tar.gz
rails-8fc8763fde2cc685ed63fcf640cfae556252809b.tar.bz2
rails-8fc8763fde2cc685ed63fcf640cfae556252809b.zip
Allow delivery method options to be set per mail instance
Diffstat (limited to 'actionmailer/test/delivery_methods_test.rb')
-rw-r--r--actionmailer/test/delivery_methods_test.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/actionmailer/test/delivery_methods_test.rb b/actionmailer/test/delivery_methods_test.rb
index 08f84dbf3b..7109f23e4c 100644
--- a/actionmailer/test/delivery_methods_test.rb
+++ b/actionmailer/test/delivery_methods_test.rb
@@ -4,6 +4,13 @@ require 'mail'
class MyCustomDelivery
end
+class MyOptionedDelivery
+ attr_reader :options
+ def initialize(options)
+ @options = options
+ end
+end
+
class BogusDelivery
def initialize(*)
end
@@ -115,6 +122,38 @@ class MailDeliveryTest < ActiveSupport::TestCase
assert_instance_of Mail::TestMailer, email.delivery_method
end
+ test "delivery method options default to class level options" do
+ default_options = {a: "b"}
+ ActionMailer::Base.add_delivery_method :optioned, MyOptionedDelivery, default_options
+ mail_instance = DeliveryMailer.welcome(:delivery_method => :optioned)
+ assert_equal default_options, mail_instance.delivery_method.options
+ end
+
+ test "delivery method options can be overridden per mail instance" do
+ default_options = {a: "b"}
+ ActionMailer::Base.add_delivery_method :optioned, MyOptionedDelivery, default_options
+ overridden_options = {a: "a"}
+ mail_instance = DeliveryMailer.welcome(:delivery_method => :optioned, :delivery_method_options => overridden_options)
+ assert_equal overridden_options, mail_instance.delivery_method.options
+ end
+
+ test "default delivery options can be overridden per mail instance" do
+ settings = { :address => "localhost",
+ :port => 25,
+ :domain => 'localhost.localdomain',
+ :user_name => nil,
+ :password => nil,
+ :authentication => nil,
+ :enable_starttls_auto => true }
+ assert_equal settings, ActionMailer::Base.smtp_settings
+ overridden_options = {user_name: "overridden", :password => "somethingobtuse"}
+ mail_instance = DeliveryMailer.welcome(:delivery_method_options => overridden_options)
+ delivery_method_instance = mail_instance.delivery_method
+ assert_equal "overridden", delivery_method_instance.settings[:user_name]
+ assert_equal "somethingobtuse", delivery_method_instance.settings[:password]
+ assert_equal delivery_method_instance.settings.merge(overridden_options), delivery_method_instance.settings
+ end
+
test "non registered delivery methods raises errors" do
DeliveryMailer.delivery_method = :unknown
assert_raise RuntimeError do