aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/test/delivery_method_test.rb
blob: fb43086423cf9f5815d5d7a1d4269352cb8d77e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
require 'abstract_unit'
require 'mail'

class DefaultDeliveryMethodMailer < ActionMailer::Base
end

class NonDefaultDeliveryMethodMailer < ActionMailer::Base
  self.delivery_method = :sendmail
end

class FileDeliveryMethodMailer < ActionMailer::Base
  self.delivery_method = :file
end

class CustomDeliveryMethod

  def initialize(values)
    @custom_deliveries = []
  end

  attr_accessor :custom_deliveries
  
  attr_accessor :settings
  
  def deliver!(mail)
    self.custom_deliveries << mail
  end
end

class CustomerDeliveryMailer < ActionMailer::Base
  self.delivery_method = CustomDeliveryMethod
end

class ActionMailerBase_delivery_method_Test < Test::Unit::TestCase
  def setup
    set_delivery_method :smtp
  end
  
  def teardown
    restore_delivery_method
  end

  def test_should_be_the_default_smtp
    assert_equal :smtp, ActionMailer::Base.delivery_method
  end

  def test_should_have_default_smtp_delivery_method_settings
    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
  end
end

class DefaultDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
  def setup
    set_delivery_method :smtp
  end
  
  def teardown
    restore_delivery_method
  end
  
  def test_should_be_the_default_smtp
    assert_equal :smtp, DefaultDeliveryMethodMailer.delivery_method
  end

  def test_should_have_default_smtp_delivery_method_settings
    settings = { :address              => "localhost",
                 :port                 => 25,
                 :domain               => 'localhost.localdomain',
                 :user_name            => nil,
                 :password             => nil,
                 :authentication       => nil,
                 :enable_starttls_auto => true }
    assert_equal settings, DefaultDeliveryMethodMailer.smtp_settings
  end
end

class NonDefaultDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
  def setup
    set_delivery_method :smtp
  end
  
  def teardown
    restore_delivery_method
  end

  def test_should_be_the_set_delivery_method
    assert_equal :sendmail, NonDefaultDeliveryMethodMailer.delivery_method
  end

  def test_should_have_default_sendmail_delivery_method_settings
    settings = {:location       => '/usr/sbin/sendmail',
                :arguments      => '-i -t'}
    assert_equal settings, NonDefaultDeliveryMethodMailer.sendmail_settings
  end
end

class FileDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
  def setup
    set_delivery_method :smtp
  end

  def teardown
    restore_delivery_method
  end

  def test_should_be_the_set_delivery_method
    assert_equal :file, FileDeliveryMethodMailer.delivery_method
  end

  def test_should_have_default_file_delivery_method_settings
    settings = {:location => "#{Dir.tmpdir}/mails"}
    assert_equal settings, FileDeliveryMethodMailer.file_settings
  end
end

class CustomDeliveryMethodMailer_delivery_method_Test < Test::Unit::TestCase
  def setup
    set_delivery_method :smtp
  end

  def teardown
    restore_delivery_method
  end

  def test_should_be_the_set_delivery_method
    assert_equal CustomDeliveryMethod, CustomerDeliveryMailer.delivery_method
  end

  def test_should_have_default_custom_delivery_method_settings
    settings = {}
    assert_equal settings, CustomerDeliveryMailer.custom_settings
  end
end