actionmailer-2.3.17-rack-upgrade 2.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. data/CHANGELOG +387 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +149 -0
  4. data/Rakefile +97 -0
  5. data/install.rb +30 -0
  6. data/lib/action_mailer.rb +62 -0
  7. data/lib/action_mailer/adv_attr_accessor.rb +30 -0
  8. data/lib/action_mailer/base.rb +739 -0
  9. data/lib/action_mailer/helpers.rb +113 -0
  10. data/lib/action_mailer/mail_helper.rb +17 -0
  11. data/lib/action_mailer/part.rb +107 -0
  12. data/lib/action_mailer/part_container.rb +55 -0
  13. data/lib/action_mailer/quoting.rb +62 -0
  14. data/lib/action_mailer/test_case.rb +64 -0
  15. data/lib/action_mailer/test_helper.rb +68 -0
  16. data/lib/action_mailer/utils.rb +7 -0
  17. data/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  18. data/lib/action_mailer/vendor/text_format.rb +10 -0
  19. data/lib/action_mailer/vendor/tmail-1.2.7/tmail.rb +6 -0
  20. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/Makefile +18 -0
  21. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/address.rb +392 -0
  22. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/attachments.rb +65 -0
  23. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/base64.rb +46 -0
  24. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/compat.rb +41 -0
  25. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/config.rb +67 -0
  26. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/core_extensions.rb +63 -0
  27. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/encode.rb +590 -0
  28. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/header.rb +962 -0
  29. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/index.rb +9 -0
  30. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/interface.rb +1162 -0
  31. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/loader.rb +3 -0
  32. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/mail.rb +578 -0
  33. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/mailbox.rb +496 -0
  34. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/main.rb +6 -0
  35. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/mbox.rb +3 -0
  36. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/net.rb +250 -0
  37. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/obsolete.rb +132 -0
  38. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.rb +1060 -0
  39. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.y +416 -0
  40. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/port.rb +379 -0
  41. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/quoting.rb +164 -0
  42. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/require_arch.rb +58 -0
  43. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner.rb +49 -0
  44. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner_r.rb +262 -0
  45. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/stringio.rb +280 -0
  46. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/utils.rb +362 -0
  47. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/COPYING +504 -0
  48. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/README +12 -0
  49. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet.rb +67 -0
  50. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +927 -0
  51. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +42 -0
  52. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +238 -0
  53. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +112 -0
  54. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +75 -0
  55. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +64 -0
  56. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +42 -0
  57. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +89 -0
  58. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +244 -0
  59. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +88 -0
  60. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +596 -0
  61. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +42 -0
  62. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +430 -0
  63. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +42 -0
  64. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +474 -0
  65. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +42 -0
  66. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +289 -0
  67. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +570 -0
  68. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +229 -0
  69. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +229 -0
  70. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +330 -0
  71. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +227 -0
  72. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +202 -0
  73. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +226 -0
  74. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +201 -0
  75. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +147 -0
  76. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +89 -0
  77. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +45 -0
  78. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +542 -0
  79. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +124 -0
  80. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +56 -0
  81. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +88 -0
  82. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +168 -0
  83. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +87 -0
  84. data/lib/action_mailer/vendor/tmail-1.2.7/tmail/version.rb +39 -0
  85. data/lib/action_mailer/vendor/tmail.rb +17 -0
  86. data/lib/action_mailer/version.rb +9 -0
  87. data/lib/actionmailer.rb +2 -0
  88. data/test/abstract_unit.rb +62 -0
  89. data/test/asset_host_test.rb +54 -0
  90. data/test/delivery_method_test.rb +51 -0
  91. data/test/fixtures/asset_host_mailer/email_with_asset.html.erb +1 -0
  92. data/test/fixtures/auto_layout_mailer/hello.html.erb +1 -0
  93. data/test/fixtures/auto_layout_mailer/multipart.text.html.erb +1 -0
  94. data/test/fixtures/auto_layout_mailer/multipart.text.plain.erb +1 -0
  95. data/test/fixtures/explicit_layout_mailer/logout.html.erb +1 -0
  96. data/test/fixtures/explicit_layout_mailer/signup.html.erb +1 -0
  97. data/test/fixtures/first_mailer/share.erb +1 -0
  98. data/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  99. data/test/fixtures/helper_mailer/use_helper.erb +1 -0
  100. data/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  101. data/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  102. data/test/fixtures/helpers/example_helper.rb +5 -0
  103. data/test/fixtures/layouts/auto_layout_mailer.html.erb +1 -0
  104. data/test/fixtures/layouts/auto_layout_mailer.text.erb +1 -0
  105. data/test/fixtures/layouts/spam.html.erb +1 -0
  106. data/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  107. data/test/fixtures/raw_email +14 -0
  108. data/test/fixtures/raw_email10 +20 -0
  109. data/test/fixtures/raw_email12 +32 -0
  110. data/test/fixtures/raw_email13 +29 -0
  111. data/test/fixtures/raw_email2 +114 -0
  112. data/test/fixtures/raw_email3 +70 -0
  113. data/test/fixtures/raw_email4 +59 -0
  114. data/test/fixtures/raw_email5 +19 -0
  115. data/test/fixtures/raw_email6 +20 -0
  116. data/test/fixtures/raw_email7 +66 -0
  117. data/test/fixtures/raw_email8 +47 -0
  118. data/test/fixtures/raw_email9 +28 -0
  119. data/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  120. data/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  121. data/test/fixtures/raw_email_with_nested_attachment +100 -0
  122. data/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  123. data/test/fixtures/second_mailer/share.erb +1 -0
  124. data/test/fixtures/templates/signed_up.erb +3 -0
  125. data/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  126. data/test/fixtures/test_mailer/body_ivar.erb +2 -0
  127. data/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  128. data/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  129. data/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  130. data/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +1 -0
  131. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  132. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~ +10 -0
  133. data/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  134. data/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  135. data/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  136. data/test/fixtures/test_mailer/rxml_template.builder +2 -0
  137. data/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  138. data/test/fixtures/test_mailer/signed_up.html.erb +3 -0
  139. data/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  140. data/test/mail_helper_test.rb +95 -0
  141. data/test/mail_layout_test.rb +123 -0
  142. data/test/mail_render_test.rb +116 -0
  143. data/test/mail_service_test.rb +1145 -0
  144. data/test/quoting_test.rb +105 -0
  145. data/test/test_helper_test.rb +129 -0
  146. data/test/tmail_test.rb +22 -0
  147. data/test/url_test.rb +76 -0
  148. metadata +209 -0
@@ -0,0 +1,105 @@
1
+ # encoding: utf-8
2
+ require 'abstract_unit'
3
+ require 'tempfile'
4
+
5
+ class QuotingTest < Test::Unit::TestCase
6
+ # Move some tests from TMAIL here
7
+ def test_unquote_quoted_printable
8
+ a ="=?ISO-8859-1?Q?[166417]_Bekr=E6ftelse_fra_Rejsefeber?="
9
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
10
+ assert_equal "[166417] Bekr\303\246ftelse fra Rejsefeber", b
11
+ end
12
+
13
+ def test_unquote_base64
14
+ a ="=?ISO-8859-1?B?WzE2NjQxN10gQmVrcuZmdGVsc2UgZnJhIFJlanNlZmViZXI=?="
15
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
16
+ assert_equal "[166417] Bekr\303\246ftelse fra Rejsefeber", b
17
+ end
18
+
19
+ def test_unquote_without_charset
20
+ a ="[166417]_Bekr=E6ftelse_fra_Rejsefeber"
21
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
22
+ assert_equal "[166417]_Bekr=E6ftelse_fra_Rejsefeber", b
23
+ end
24
+
25
+ def test_unqoute_multiple
26
+ quoted ="=?utf-8?q?Re=3A_=5B12=5D_=23137=3A_Inkonsistente_verwendung_von_=22Hin?==?utf-8?b?enVmw7xnZW4i?="
27
+ actual = TMail::Unquoter.unquote_and_convert_to(quoted, 'utf-8')
28
+
29
+ expected = "Re: [12] #137: Inkonsistente verwendung von \"Hinzuf\303\274gen\""
30
+ expected.force_encoding 'ASCII-8BIT' if expected.respond_to?(:force_encoding)
31
+
32
+ assert_equal expected, actual
33
+ end
34
+
35
+ def test_unqoute_in_the_middle
36
+ a ="Re: Photos =?ISO-8859-1?Q?Brosch=FCre_Rand?="
37
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
38
+ assert_equal "Re: Photos Brosch\303\274re Rand", b
39
+ end
40
+
41
+ def test_unqoute_iso
42
+ a ="=?ISO-8859-1?Q?Brosch=FCre_Rand?="
43
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'iso-8859-1')
44
+ expected = "Brosch\374re Rand"
45
+ expected.force_encoding 'iso-8859-1' if expected.respond_to?(:force_encoding)
46
+ assert_equal expected, b
47
+ end
48
+
49
+ def test_quote_multibyte_chars
50
+ original = "\303\246 \303\270 and \303\245"
51
+ original.force_encoding('ASCII-8BIT') if original.respond_to?(:force_encoding)
52
+
53
+ result = execute_in_sandbox(<<-CODE)
54
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
55
+ if RUBY_VERSION < '1.9'
56
+ $KCODE = 'u'
57
+ require 'jcode'
58
+ end
59
+ require 'action_mailer/quoting'
60
+ include ActionMailer::Quoting
61
+ quoted_printable(#{original.inspect}, "UTF-8")
62
+ CODE
63
+
64
+ unquoted = TMail::Unquoter.unquote_and_convert_to(result, nil)
65
+ assert_equal unquoted, original
66
+ end
67
+
68
+
69
+ # test an email that has been created using \r\n newlines, instead of
70
+ # \n newlines.
71
+ def test_email_quoted_with_0d0a
72
+ mail = TMail::Mail.parse(IO.read("#{File.dirname(__FILE__)}/fixtures/raw_email_quoted_with_0d0a"))
73
+ assert_match %r{Elapsed time}, mail.body
74
+ end
75
+
76
+ def test_email_with_partially_quoted_subject
77
+ mail = TMail::Mail.parse(IO.read("#{File.dirname(__FILE__)}/fixtures/raw_email_with_partially_quoted_subject"))
78
+ expected = "Re: Test: \"\346\274\242\345\255\227\" mid \"\346\274\242\345\255\227\" tail"
79
+ expected.force_encoding('ASCII-8BIT') if expected.respond_to?(:force_encoding)
80
+ assert_equal expected, mail.subject
81
+ end
82
+
83
+ private
84
+ # This whole thing *could* be much simpler, but I don't think Tempfile,
85
+ # popen and others exist on all platforms (like Windows).
86
+ def execute_in_sandbox(code)
87
+ test_name = "#{File.dirname(__FILE__)}/am-quoting-test.#{$$}.rb"
88
+ res_name = "#{File.dirname(__FILE__)}/am-quoting-test.#{$$}.out"
89
+
90
+ File.open(test_name, "w+") do |file|
91
+ file.write(<<-CODE)
92
+ block = Proc.new do
93
+ #{code}
94
+ end
95
+ puts block.call
96
+ CODE
97
+ end
98
+
99
+ system("ruby #{test_name} > #{res_name}") or raise "could not run test in sandbox"
100
+ File.read(res_name).chomp
101
+ ensure
102
+ File.delete(test_name) rescue nil
103
+ File.delete(res_name) rescue nil
104
+ end
105
+ end
@@ -0,0 +1,129 @@
1
+ require 'abstract_unit'
2
+
3
+ class TestHelperMailer < ActionMailer::Base
4
+ def test
5
+ recipients "test@example.com"
6
+ from "tester@example.com"
7
+ body render(:inline => "Hello, <%= @world %>", :body => { :world => "Earth" })
8
+ end
9
+ end
10
+
11
+ class TestHelperMailerTest < ActionMailer::TestCase
12
+ def test_setup_sets_right_action_mailer_options
13
+ assert_equal :test, ActionMailer::Base.delivery_method
14
+ assert ActionMailer::Base.perform_deliveries
15
+ assert_equal [], ActionMailer::Base.deliveries
16
+ end
17
+
18
+ def test_setup_creates_the_expected_mailer
19
+ assert @expected.is_a?(TMail::Mail)
20
+ assert_equal "1.0", @expected.mime_version
21
+ assert_equal "text/plain", @expected.content_type
22
+ end
23
+
24
+ def test_mailer_class_is_correctly_inferred
25
+ assert_equal TestHelperMailer, self.class.mailer_class
26
+ end
27
+
28
+ def test_determine_default_mailer_raises_correct_error
29
+ assert_raise(ActionMailer::NonInferrableMailerError) do
30
+ self.class.determine_default_mailer("NotAMailerTest")
31
+ end
32
+ end
33
+
34
+ def test_charset_is_utf_8
35
+ assert_equal "utf-8", charset
36
+ end
37
+
38
+ def test_encode
39
+ assert_equal "=?utf-8?Q?=0Aasdf=0A?=", encode("\nasdf\n")
40
+ end
41
+
42
+ def test_assert_emails
43
+ assert_nothing_raised do
44
+ assert_emails 1 do
45
+ TestHelperMailer.deliver_test
46
+ end
47
+ end
48
+ end
49
+
50
+ def test_repeated_assert_emails_calls
51
+ assert_nothing_raised do
52
+ assert_emails 1 do
53
+ TestHelperMailer.deliver_test
54
+ end
55
+ end
56
+
57
+ assert_nothing_raised do
58
+ assert_emails 2 do
59
+ TestHelperMailer.deliver_test
60
+ TestHelperMailer.deliver_test
61
+ end
62
+ end
63
+ end
64
+
65
+ def test_assert_emails_with_no_block
66
+ assert_nothing_raised do
67
+ TestHelperMailer.deliver_test
68
+ assert_emails 1
69
+ end
70
+
71
+ assert_nothing_raised do
72
+ TestHelperMailer.deliver_test
73
+ TestHelperMailer.deliver_test
74
+ assert_emails 3
75
+ end
76
+ end
77
+
78
+ def test_assert_no_emails
79
+ assert_nothing_raised do
80
+ assert_no_emails do
81
+ TestHelperMailer.create_test
82
+ end
83
+ end
84
+ end
85
+
86
+ def test_assert_emails_too_few_sent
87
+ error = assert_raise ActiveSupport::TestCase::Assertion do
88
+ assert_emails 2 do
89
+ TestHelperMailer.deliver_test
90
+ end
91
+ end
92
+
93
+ assert_match /2 .* but 1/, error.message
94
+ end
95
+
96
+ def test_assert_emails_too_many_sent
97
+ error = assert_raise ActiveSupport::TestCase::Assertion do
98
+ assert_emails 1 do
99
+ TestHelperMailer.deliver_test
100
+ TestHelperMailer.deliver_test
101
+ end
102
+ end
103
+
104
+ assert_match /1 .* but 2/, error.message
105
+ end
106
+
107
+ def test_assert_no_emails_failure
108
+ error = assert_raise ActiveSupport::TestCase::Assertion do
109
+ assert_no_emails do
110
+ TestHelperMailer.deliver_test
111
+ end
112
+ end
113
+
114
+ assert_match /0 .* but 1/, error.message
115
+ end
116
+ end
117
+
118
+ class AnotherTestHelperMailerTest < ActionMailer::TestCase
119
+ tests TestHelperMailer
120
+
121
+ def setup
122
+ @test_var = "a value"
123
+ end
124
+
125
+ def test_setup_shouldnt_conflict_with_mailer_setup
126
+ assert @expected.is_a?(TMail::Mail)
127
+ assert_equal 'a value', @test_var
128
+ end
129
+ end
@@ -0,0 +1,22 @@
1
+ require 'abstract_unit'
2
+
3
+ class TMailMailTest < Test::Unit::TestCase
4
+ def test_body
5
+ m = TMail::Mail.new
6
+ expected = 'something_with_underscores'
7
+ m.encoding = 'quoted-printable'
8
+ quoted_body = [expected].pack('*M')
9
+ m.body = quoted_body
10
+ assert_equal "something_with_underscores=\n", m.quoted_body
11
+ assert_equal expected, m.body
12
+ end
13
+
14
+ def test_nested_attachments_are_recognized_correctly
15
+ fixture = File.read("#{File.dirname(__FILE__)}/fixtures/raw_email_with_nested_attachment")
16
+ mail = TMail::Mail.parse(fixture)
17
+ assert_equal 2, mail.attachments.length
18
+ assert_equal "image/png", mail.attachments.first.content_type
19
+ assert_equal 1902, mail.attachments.first.length
20
+ assert_equal "application/pkcs7-signature", mail.attachments.last.content_type
21
+ end
22
+ end
@@ -0,0 +1,76 @@
1
+ require 'abstract_unit'
2
+
3
+ class TestMailer < ActionMailer::Base
4
+
5
+ default_url_options[:host] = 'www.basecamphq.com'
6
+
7
+ def signed_up_with_url(recipient)
8
+ @recipients = recipient
9
+ @subject = "[Signed up] Welcome #{recipient}"
10
+ @from = "system@loudthinking.com"
11
+ @sent_on = Time.local(2004, 12, 12)
12
+
13
+ @body["recipient"] = recipient
14
+ @body["welcome_url"] = url_for :host => "example.com", :controller => "welcome", :action => "greeting"
15
+ end
16
+
17
+ class <<self
18
+ attr_accessor :received_body
19
+ end
20
+
21
+ def receive(mail)
22
+ self.class.received_body = mail.body
23
+ end
24
+ end
25
+
26
+ class ActionMailerUrlTest < Test::Unit::TestCase
27
+ include ActionMailer::Quoting
28
+
29
+ def encode( text, charset="utf-8" )
30
+ quoted_printable( text, charset )
31
+ end
32
+
33
+ def new_mail( charset="utf-8" )
34
+ mail = TMail::Mail.new
35
+ mail.mime_version = "1.0"
36
+ if charset
37
+ mail.set_content_type "text", "plain", { "charset" => charset }
38
+ end
39
+ mail
40
+ end
41
+
42
+ def setup
43
+ set_delivery_method :test
44
+ ActionMailer::Base.perform_deliveries = true
45
+ ActionMailer::Base.deliveries = []
46
+
47
+ @recipient = 'test@localhost'
48
+ end
49
+
50
+ def teardown
51
+ restore_delivery_method
52
+ end
53
+
54
+ def test_signed_up_with_url
55
+ ActionController::Routing::Routes.draw do |map|
56
+ map.connect ':controller/:action/:id'
57
+ map.welcome 'welcome', :controller=>"foo", :action=>"bar"
58
+ end
59
+
60
+ expected = new_mail
61
+ expected.to = @recipient
62
+ expected.subject = "[Signed up] Welcome #{@recipient}"
63
+ expected.body = "Hello there, \n\nMr. #{@recipient}. Please see our greeting at http://example.com/welcome/greeting http://www.basecamphq.com/welcome\n\n<img alt=\"Somelogo\" src=\"/images/somelogo.png\" />"
64
+ expected.from = "system@loudthinking.com"
65
+ expected.date = Time.local(2004, 12, 12)
66
+
67
+ created = nil
68
+ assert_nothing_raised { created = TestMailer.create_signed_up_with_url(@recipient) }
69
+ assert_not_nil created
70
+ assert_equal expected.encoded, created.encoded
71
+
72
+ assert_nothing_raised { TestMailer.deliver_signed_up_with_url(@recipient) }
73
+ assert_not_nil ActionMailer::Base.deliveries.first
74
+ assert_equal expected.encoded, ActionMailer::Base.deliveries.first.encoded
75
+ end
76
+ end
metadata ADDED
@@ -0,0 +1,209 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: actionmailer-2.3.17-rack-upgrade
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.17
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - David Heinemeier Hansson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: actionpack-2.3.17-rack-upgrade
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - '='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.3.17
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - '='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.3.17
30
+ description: Makes it trivial to test and deliver emails sent from a single service
31
+ layer.
32
+ email: david@loudthinking.com
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - Rakefile
38
+ - install.rb
39
+ - README
40
+ - CHANGELOG
41
+ - MIT-LICENSE
42
+ - lib/action_mailer/adv_attr_accessor.rb
43
+ - lib/action_mailer/base.rb
44
+ - lib/action_mailer/helpers.rb
45
+ - lib/action_mailer/mail_helper.rb
46
+ - lib/action_mailer/part.rb
47
+ - lib/action_mailer/part_container.rb
48
+ - lib/action_mailer/quoting.rb
49
+ - lib/action_mailer/test_case.rb
50
+ - lib/action_mailer/test_helper.rb
51
+ - lib/action_mailer/utils.rb
52
+ - lib/action_mailer/vendor/text-format-0.6.3/text/format.rb
53
+ - lib/action_mailer/vendor/text_format.rb
54
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/address.rb
55
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/attachments.rb
56
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/base64.rb
57
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/compat.rb
58
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/config.rb
59
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/core_extensions.rb
60
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/encode.rb
61
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/header.rb
62
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/index.rb
63
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/interface.rb
64
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/loader.rb
65
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/mail.rb
66
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/mailbox.rb
67
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/main.rb
68
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/Makefile
69
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/mbox.rb
70
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/net.rb
71
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/obsolete.rb
72
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.rb
73
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/parser.y
74
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/port.rb
75
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/quoting.rb
76
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/require_arch.rb
77
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner.rb
78
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/scanner_r.rb
79
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/stringio.rb
80
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/utils.rb
81
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/COPYING
82
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb
83
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb
84
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb
85
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb
86
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb
87
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb
88
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb
89
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb
90
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb
91
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb
92
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb
93
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb
94
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb
95
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb
96
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb
97
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb
98
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb
99
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb
100
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb
101
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb
102
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb
103
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb
104
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb
105
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb
106
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb
107
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb
108
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb
109
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb
110
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb
111
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb
112
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb
113
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb
114
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb
115
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb
116
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/lib/rchardet.rb
117
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/vendor/rchardet-1.3/README
118
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail/version.rb
119
+ - lib/action_mailer/vendor/tmail-1.2.7/tmail.rb
120
+ - lib/action_mailer/vendor/tmail.rb
121
+ - lib/action_mailer/version.rb
122
+ - lib/action_mailer.rb
123
+ - lib/actionmailer.rb
124
+ - test/abstract_unit.rb
125
+ - test/asset_host_test.rb
126
+ - test/delivery_method_test.rb
127
+ - test/fixtures/asset_host_mailer/email_with_asset.html.erb
128
+ - test/fixtures/auto_layout_mailer/hello.html.erb
129
+ - test/fixtures/auto_layout_mailer/multipart.text.html.erb
130
+ - test/fixtures/auto_layout_mailer/multipart.text.plain.erb
131
+ - test/fixtures/explicit_layout_mailer/logout.html.erb
132
+ - test/fixtures/explicit_layout_mailer/signup.html.erb
133
+ - test/fixtures/first_mailer/share.erb
134
+ - test/fixtures/helper_mailer/use_example_helper.erb
135
+ - test/fixtures/helper_mailer/use_helper.erb
136
+ - test/fixtures/helper_mailer/use_helper_method.erb
137
+ - test/fixtures/helper_mailer/use_mail_helper.erb
138
+ - test/fixtures/helpers/example_helper.rb
139
+ - test/fixtures/layouts/auto_layout_mailer.html.erb
140
+ - test/fixtures/layouts/auto_layout_mailer.text.erb
141
+ - test/fixtures/layouts/spam.html.erb
142
+ - test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb
143
+ - test/fixtures/raw_email
144
+ - test/fixtures/raw_email10
145
+ - test/fixtures/raw_email12
146
+ - test/fixtures/raw_email13
147
+ - test/fixtures/raw_email2
148
+ - test/fixtures/raw_email3
149
+ - test/fixtures/raw_email4
150
+ - test/fixtures/raw_email5
151
+ - test/fixtures/raw_email6
152
+ - test/fixtures/raw_email7
153
+ - test/fixtures/raw_email8
154
+ - test/fixtures/raw_email9
155
+ - test/fixtures/raw_email_quoted_with_0d0a
156
+ - test/fixtures/raw_email_with_invalid_characters_in_content_type
157
+ - test/fixtures/raw_email_with_nested_attachment
158
+ - test/fixtures/raw_email_with_partially_quoted_subject
159
+ - test/fixtures/second_mailer/share.erb
160
+ - test/fixtures/templates/signed_up.erb
161
+ - test/fixtures/test_mailer/_subtemplate.text.plain.erb
162
+ - test/fixtures/test_mailer/body_ivar.erb
163
+ - test/fixtures/test_mailer/custom_templating_extension.text.html.haml
164
+ - test/fixtures/test_mailer/custom_templating_extension.text.plain.haml
165
+ - test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb
166
+ - test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak
167
+ - test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb
168
+ - test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~
169
+ - test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb
170
+ - test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb
171
+ - test/fixtures/test_mailer/included_subtemplate.text.plain.erb
172
+ - test/fixtures/test_mailer/rxml_template.builder
173
+ - test/fixtures/test_mailer/rxml_template.rxml
174
+ - test/fixtures/test_mailer/signed_up.html.erb
175
+ - test/fixtures/test_mailer/signed_up_with_url.erb
176
+ - test/mail_helper_test.rb
177
+ - test/mail_layout_test.rb
178
+ - test/mail_render_test.rb
179
+ - test/mail_service_test.rb
180
+ - test/quoting_test.rb
181
+ - test/test_helper_test.rb
182
+ - test/tmail_test.rb
183
+ - test/url_test.rb
184
+ homepage: http://www.rubyonrails.org
185
+ licenses: []
186
+ post_install_message:
187
+ rdoc_options: []
188
+ require_paths:
189
+ - lib
190
+ required_ruby_version: !ruby/object:Gem::Requirement
191
+ none: false
192
+ requirements:
193
+ - - ! '>='
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
+ none: false
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ requirements:
203
+ - none
204
+ rubyforge_project: actionmailer
205
+ rubygems_version: 1.8.24
206
+ signing_key:
207
+ specification_version: 3
208
+ summary: Service layer for easy email delivery and testing.
209
+ test_files: []