rack-mail_exception 0.0.1

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 (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +38 -0
  5. data/Rakefile +56 -0
  6. data/VERSION +1 -0
  7. data/lib/rack/mail_exception.rb +103 -0
  8. data/test/helper.rb +13 -0
  9. data/test/test_rack_mail_exception.rb +93 -0
  10. data/vendor/mail/.bundle/config +2 -0
  11. data/vendor/mail/CHANGELOG.rdoc +370 -0
  12. data/vendor/mail/Dependencies.txt +3 -0
  13. data/vendor/mail/Gemfile +17 -0
  14. data/vendor/mail/README.rdoc +572 -0
  15. data/vendor/mail/ROADMAP +92 -0
  16. data/vendor/mail/Rakefile +41 -0
  17. data/vendor/mail/TODO.rdoc +9 -0
  18. data/vendor/mail/lib/mail.rb +76 -0
  19. data/vendor/mail/lib/mail/attachments_list.rb +99 -0
  20. data/vendor/mail/lib/mail/body.rb +287 -0
  21. data/vendor/mail/lib/mail/configuration.rb +67 -0
  22. data/vendor/mail/lib/mail/core_extensions/blank.rb +26 -0
  23. data/vendor/mail/lib/mail/core_extensions/nil.rb +11 -0
  24. data/vendor/mail/lib/mail/core_extensions/string.rb +27 -0
  25. data/vendor/mail/lib/mail/elements.rb +14 -0
  26. data/vendor/mail/lib/mail/elements/address.rb +306 -0
  27. data/vendor/mail/lib/mail/elements/address_list.rb +74 -0
  28. data/vendor/mail/lib/mail/elements/content_disposition_element.rb +30 -0
  29. data/vendor/mail/lib/mail/elements/content_location_element.rb +25 -0
  30. data/vendor/mail/lib/mail/elements/content_transfer_encoding_element.rb +24 -0
  31. data/vendor/mail/lib/mail/elements/content_type_element.rb +35 -0
  32. data/vendor/mail/lib/mail/elements/date_time_element.rb +26 -0
  33. data/vendor/mail/lib/mail/elements/envelope_from_element.rb +34 -0
  34. data/vendor/mail/lib/mail/elements/message_ids_element.rb +29 -0
  35. data/vendor/mail/lib/mail/elements/mime_version_element.rb +26 -0
  36. data/vendor/mail/lib/mail/elements/phrase_list.rb +21 -0
  37. data/vendor/mail/lib/mail/elements/received_element.rb +30 -0
  38. data/vendor/mail/lib/mail/encodings.rb +258 -0
  39. data/vendor/mail/lib/mail/encodings/7bit.rb +31 -0
  40. data/vendor/mail/lib/mail/encodings/8bit.rb +31 -0
  41. data/vendor/mail/lib/mail/encodings/base64.rb +33 -0
  42. data/vendor/mail/lib/mail/encodings/binary.rb +31 -0
  43. data/vendor/mail/lib/mail/encodings/quoted_printable.rb +38 -0
  44. data/vendor/mail/lib/mail/encodings/transfer_encoding.rb +58 -0
  45. data/vendor/mail/lib/mail/envelope.rb +35 -0
  46. data/vendor/mail/lib/mail/field.rb +223 -0
  47. data/vendor/mail/lib/mail/field_list.rb +33 -0
  48. data/vendor/mail/lib/mail/fields.rb +35 -0
  49. data/vendor/mail/lib/mail/fields/bcc_field.rb +56 -0
  50. data/vendor/mail/lib/mail/fields/cc_field.rb +55 -0
  51. data/vendor/mail/lib/mail/fields/comments_field.rb +41 -0
  52. data/vendor/mail/lib/mail/fields/common/address_container.rb +16 -0
  53. data/vendor/mail/lib/mail/fields/common/common_address.rb +125 -0
  54. data/vendor/mail/lib/mail/fields/common/common_date.rb +42 -0
  55. data/vendor/mail/lib/mail/fields/common/common_field.rb +50 -0
  56. data/vendor/mail/lib/mail/fields/common/common_message_id.rb +43 -0
  57. data/vendor/mail/lib/mail/fields/common/parameter_hash.rb +52 -0
  58. data/vendor/mail/lib/mail/fields/content_description_field.rb +19 -0
  59. data/vendor/mail/lib/mail/fields/content_disposition_field.rb +69 -0
  60. data/vendor/mail/lib/mail/fields/content_id_field.rb +63 -0
  61. data/vendor/mail/lib/mail/fields/content_location_field.rb +42 -0
  62. data/vendor/mail/lib/mail/fields/content_transfer_encoding_field.rb +50 -0
  63. data/vendor/mail/lib/mail/fields/content_type_field.rb +185 -0
  64. data/vendor/mail/lib/mail/fields/date_field.rb +55 -0
  65. data/vendor/mail/lib/mail/fields/from_field.rb +55 -0
  66. data/vendor/mail/lib/mail/fields/in_reply_to_field.rb +55 -0
  67. data/vendor/mail/lib/mail/fields/keywords_field.rb +44 -0
  68. data/vendor/mail/lib/mail/fields/message_id_field.rb +83 -0
  69. data/vendor/mail/lib/mail/fields/mime_version_field.rb +53 -0
  70. data/vendor/mail/lib/mail/fields/optional_field.rb +13 -0
  71. data/vendor/mail/lib/mail/fields/received_field.rb +67 -0
  72. data/vendor/mail/lib/mail/fields/references_field.rb +55 -0
  73. data/vendor/mail/lib/mail/fields/reply_to_field.rb +55 -0
  74. data/vendor/mail/lib/mail/fields/resent_bcc_field.rb +55 -0
  75. data/vendor/mail/lib/mail/fields/resent_cc_field.rb +55 -0
  76. data/vendor/mail/lib/mail/fields/resent_date_field.rb +35 -0
  77. data/vendor/mail/lib/mail/fields/resent_from_field.rb +55 -0
  78. data/vendor/mail/lib/mail/fields/resent_message_id_field.rb +34 -0
  79. data/vendor/mail/lib/mail/fields/resent_sender_field.rb +62 -0
  80. data/vendor/mail/lib/mail/fields/resent_to_field.rb +55 -0
  81. data/vendor/mail/lib/mail/fields/return_path_field.rb +64 -0
  82. data/vendor/mail/lib/mail/fields/sender_field.rb +67 -0
  83. data/vendor/mail/lib/mail/fields/structured_field.rb +51 -0
  84. data/vendor/mail/lib/mail/fields/subject_field.rb +16 -0
  85. data/vendor/mail/lib/mail/fields/to_field.rb +55 -0
  86. data/vendor/mail/lib/mail/fields/unstructured_field.rb +166 -0
  87. data/vendor/mail/lib/mail/header.rb +262 -0
  88. data/vendor/mail/lib/mail/mail.rb +234 -0
  89. data/vendor/mail/lib/mail/message.rb +1867 -0
  90. data/vendor/mail/lib/mail/network.rb +9 -0
  91. data/vendor/mail/lib/mail/network/delivery_methods/file_delivery.rb +40 -0
  92. data/vendor/mail/lib/mail/network/delivery_methods/sendmail.rb +62 -0
  93. data/vendor/mail/lib/mail/network/delivery_methods/smtp.rb +110 -0
  94. data/vendor/mail/lib/mail/network/delivery_methods/test_mailer.rb +40 -0
  95. data/vendor/mail/lib/mail/network/retriever_methods/imap.rb +18 -0
  96. data/vendor/mail/lib/mail/network/retriever_methods/pop3.rb +149 -0
  97. data/vendor/mail/lib/mail/parsers/address_lists.rb +64 -0
  98. data/vendor/mail/lib/mail/parsers/address_lists.treetop +19 -0
  99. data/vendor/mail/lib/mail/parsers/content_disposition.rb +387 -0
  100. data/vendor/mail/lib/mail/parsers/content_disposition.treetop +46 -0
  101. data/vendor/mail/lib/mail/parsers/content_location.rb +139 -0
  102. data/vendor/mail/lib/mail/parsers/content_location.treetop +20 -0
  103. data/vendor/mail/lib/mail/parsers/content_transfer_encoding.rb +162 -0
  104. data/vendor/mail/lib/mail/parsers/content_transfer_encoding.treetop +20 -0
  105. data/vendor/mail/lib/mail/parsers/content_type.rb +539 -0
  106. data/vendor/mail/lib/mail/parsers/content_type.treetop +58 -0
  107. data/vendor/mail/lib/mail/parsers/date_time.rb +114 -0
  108. data/vendor/mail/lib/mail/parsers/date_time.treetop +11 -0
  109. data/vendor/mail/lib/mail/parsers/envelope_from.rb +194 -0
  110. data/vendor/mail/lib/mail/parsers/envelope_from.treetop +32 -0
  111. data/vendor/mail/lib/mail/parsers/message_ids.rb +45 -0
  112. data/vendor/mail/lib/mail/parsers/message_ids.treetop +15 -0
  113. data/vendor/mail/lib/mail/parsers/mime_version.rb +144 -0
  114. data/vendor/mail/lib/mail/parsers/mime_version.treetop +19 -0
  115. data/vendor/mail/lib/mail/parsers/phrase_lists.rb +45 -0
  116. data/vendor/mail/lib/mail/parsers/phrase_lists.treetop +15 -0
  117. data/vendor/mail/lib/mail/parsers/received.rb +71 -0
  118. data/vendor/mail/lib/mail/parsers/received.treetop +11 -0
  119. data/vendor/mail/lib/mail/parsers/rfc2045.rb +464 -0
  120. data/vendor/mail/lib/mail/parsers/rfc2045.treetop +36 -0
  121. data/vendor/mail/lib/mail/parsers/rfc2822.rb +5318 -0
  122. data/vendor/mail/lib/mail/parsers/rfc2822.treetop +410 -0
  123. data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.rb +3757 -0
  124. data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.treetop +241 -0
  125. data/vendor/mail/lib/mail/part.rb +102 -0
  126. data/vendor/mail/lib/mail/parts_list.rb +34 -0
  127. data/vendor/mail/lib/mail/patterns.rb +30 -0
  128. data/vendor/mail/lib/mail/utilities.rb +181 -0
  129. data/vendor/mail/lib/mail/version.rb +10 -0
  130. data/vendor/mail/lib/mail/version_specific/ruby_1_8.rb +97 -0
  131. data/vendor/mail/lib/mail/version_specific/ruby_1_9.rb +87 -0
  132. data/vendor/mail/lib/tasks/corpus.rake +125 -0
  133. data/vendor/mail/lib/tasks/treetop.rake +10 -0
  134. data/vendor/mail/mail.gemspec +20 -0
  135. data/vendor/mail/reference/US ASCII Table.txt +130 -0
  136. data/vendor/mail/reference/rfc1035 Domain Implementation and Specification.txt +3083 -0
  137. data/vendor/mail/reference/rfc1049 Content-Type Header Field for Internet Messages.txt +451 -0
  138. data/vendor/mail/reference/rfc1344 Implications of MIME for Internet Mail Gateways.txt +586 -0
  139. data/vendor/mail/reference/rfc1345 Character Mnemonics & Character Sets.txt +5761 -0
  140. data/vendor/mail/reference/rfc1524 A User Agent Configuration Mechanism For Multimedia Mail Format Information.txt +675 -0
  141. data/vendor/mail/reference/rfc1652 SMTP Service Extension for 8bit-MIMEtransport.txt +339 -0
  142. data/vendor/mail/reference/rfc1892 Multipart Report .txt +227 -0
  143. data/vendor/mail/reference/rfc1893 Mail System Status Codes.txt +843 -0
  144. data/vendor/mail/reference/rfc2045 Multipurpose Internet Mail Extensions (1).txt +1739 -0
  145. data/vendor/mail/reference/rfc2046 Multipurpose Internet Mail Extensions (2).txt +2467 -0
  146. data/vendor/mail/reference/rfc2047 Multipurpose Internet Mail Extensions (3).txt +843 -0
  147. data/vendor/mail/reference/rfc2048 Multipurpose Internet Mail Extensions (4).txt +1180 -0
  148. data/vendor/mail/reference/rfc2049 Multipurpose Internet Mail Extensions (5).txt +1347 -0
  149. data/vendor/mail/reference/rfc2111 Content-ID and Message-ID URLs.txt +283 -0
  150. data/vendor/mail/reference/rfc2183 Content-Disposition Header Field.txt +675 -0
  151. data/vendor/mail/reference/rfc2231 MIME Parameter Value and Encoded Word Extensions.txt +563 -0
  152. data/vendor/mail/reference/rfc2387 MIME Multipart-Related Content-type.txt +563 -0
  153. data/vendor/mail/reference/rfc2821 Simple Mail Transfer Protocol.txt +3711 -0
  154. data/vendor/mail/reference/rfc2822 Internet Message Format.txt +2859 -0
  155. data/vendor/mail/reference/rfc3462 Reporting of Mail System Administrative Messages.txt +396 -0
  156. data/vendor/mail/reference/rfc3696 Checking and Transformation of Names.txt +898 -0
  157. data/vendor/mail/reference/rfc4155 The application-mbox Media Type.txt +502 -0
  158. data/vendor/mail/reference/rfc4234 Augmented BNF for Syntax Specifications: ABNF.txt +899 -0
  159. data/vendor/mail/reference/rfc822 Standard for the Format of ARPA Internet Text Messages.txt +2900 -0
  160. data/vendor/mail/spec/environment.rb +15 -0
  161. data/vendor/mail/spec/features/making_a_new_message.feature +14 -0
  162. data/vendor/mail/spec/features/steps/env.rb +6 -0
  163. data/vendor/mail/spec/features/steps/making_a_new_message_steps.rb +11 -0
  164. data/vendor/mail/spec/fixtures/attachments/basic_email.eml +31 -0
  165. data/vendor/mail/spec/fixtures/attachments/test.gif +0 -0
  166. data/vendor/mail/spec/fixtures/attachments/test.jpg +0 -0
  167. data/vendor/mail/spec/fixtures/attachments/test.pdf +0 -0
  168. data/vendor/mail/spec/fixtures/attachments/test.png +0 -0
  169. data/vendor/mail/spec/fixtures/attachments/test.tiff +0 -0
  170. data/vendor/mail/spec/fixtures/attachments/test.zip +0 -0
  171. data/vendor/mail/spec/fixtures/attachments//343/201/246/343/201/231/343/201/250.txt +2 -0
  172. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_disposition.eml +29 -0
  173. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_location.eml +32 -0
  174. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_message_rfc822.eml +92 -0
  175. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_only_email.eml +17 -0
  176. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_pdf.eml +70 -0
  177. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_encoded_name.eml +47 -0
  178. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_quoted_filename.eml +60 -0
  179. data/vendor/mail/spec/fixtures/emails/error_emails/cant_parse_from.eml +33 -0
  180. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_7-bit.eml +231 -0
  181. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_empty.eml +33 -0
  182. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_plain.eml +148 -0
  183. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_qp_with_space.eml +53 -0
  184. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_spam.eml +44 -0
  185. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_text-html.eml +50 -0
  186. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_8bits.eml +770 -0
  187. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_semi_colon.eml +269 -0
  188. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_x_uuencode.eml +79 -0
  189. data/vendor/mail/spec/fixtures/emails/error_emails/empty_group_lists.eml +162 -0
  190. data/vendor/mail/spec/fixtures/emails/error_emails/header_fields_with_empty_values.eml +33 -0
  191. data/vendor/mail/spec/fixtures/emails/error_emails/missing_body.eml +16 -0
  192. data/vendor/mail/spec/fixtures/emails/error_emails/missing_content_disposition.eml +43 -0
  193. data/vendor/mail/spec/fixtures/emails/error_emails/multiple_content_types.eml +25 -0
  194. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email11.eml +34 -0
  195. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email12.eml +32 -0
  196. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email2.eml +114 -0
  197. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email4.eml +59 -0
  198. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email7.eml +66 -0
  199. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_encoded_stack_level_too_deep.eml +53 -0
  200. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_illegal_boundary.eml +58 -0
  201. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_mimepart_without_content_type.eml +94 -0
  202. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_multipart_mixed_quoted_boundary.eml +50 -0
  203. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_nested_attachment.eml +100 -0
  204. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_quoted_illegal_boundary.eml +58 -0
  205. data/vendor/mail/spec/fixtures/emails/mime_emails/sig_only_email.eml +29 -0
  206. data/vendor/mail/spec/fixtures/emails/mime_emails/two_from_in_message.eml +42 -0
  207. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese.eml +9 -0
  208. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment.eml +27 -0
  209. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment_long_name.eml +44 -0
  210. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce1.eml +179 -0
  211. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce2.eml +179 -0
  212. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_422.eml +98 -0
  213. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_530.eml +97 -0
  214. data/vendor/mail/spec/fixtures/emails/plain_emails/basic_email.eml +31 -0
  215. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email.eml +14 -0
  216. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email10.eml +20 -0
  217. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email5.eml +19 -0
  218. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email6.eml +20 -0
  219. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email8.eml +47 -0
  220. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_bad_time.eml +62 -0
  221. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_double_at_in_header.eml +14 -0
  222. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_incorrect_header.eml +28 -0
  223. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_multiple_from.eml +30 -0
  224. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_quoted_with_0d0a.eml +14 -0
  225. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_reply.eml +32 -0
  226. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_simple.eml +11 -0
  227. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_string_in_date_field.eml +17 -0
  228. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_trailing_dot.eml +21 -0
  229. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_bad_date.eml +48 -0
  230. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_partially_quoted_subject.eml +14 -0
  231. data/vendor/mail/spec/fixtures/emails/rfc2822/example01.eml +8 -0
  232. data/vendor/mail/spec/fixtures/emails/rfc2822/example02.eml +9 -0
  233. data/vendor/mail/spec/fixtures/emails/rfc2822/example03.eml +7 -0
  234. data/vendor/mail/spec/fixtures/emails/rfc2822/example04.eml +7 -0
  235. data/vendor/mail/spec/fixtures/emails/rfc2822/example05.eml +8 -0
  236. data/vendor/mail/spec/fixtures/emails/rfc2822/example06.eml +10 -0
  237. data/vendor/mail/spec/fixtures/emails/rfc2822/example07.eml +9 -0
  238. data/vendor/mail/spec/fixtures/emails/rfc2822/example08.eml +12 -0
  239. data/vendor/mail/spec/fixtures/emails/rfc2822/example09.eml +15 -0
  240. data/vendor/mail/spec/fixtures/emails/rfc2822/example10.eml +15 -0
  241. data/vendor/mail/spec/fixtures/emails/rfc2822/example11.eml +6 -0
  242. data/vendor/mail/spec/fixtures/emails/rfc2822/example12.eml +8 -0
  243. data/vendor/mail/spec/fixtures/emails/rfc2822/example13.eml +10 -0
  244. data/vendor/mail/spec/fixtures/emails/sample_output_multipart +0 -0
  245. data/vendor/mail/spec/mail/attachments_list_spec.rb +214 -0
  246. data/vendor/mail/spec/mail/body_spec.rb +385 -0
  247. data/vendor/mail/spec/mail/configuration_spec.rb +19 -0
  248. data/vendor/mail/spec/mail/core_extensions/string_spec.rb +62 -0
  249. data/vendor/mail/spec/mail/core_extensions_spec.rb +99 -0
  250. data/vendor/mail/spec/mail/elements/address_list_spec.rb +109 -0
  251. data/vendor/mail/spec/mail/elements/address_spec.rb +609 -0
  252. data/vendor/mail/spec/mail/elements/date_time_element_spec.rb +20 -0
  253. data/vendor/mail/spec/mail/elements/envelope_from_element_spec.rb +31 -0
  254. data/vendor/mail/spec/mail/elements/message_ids_element_spec.rb +43 -0
  255. data/vendor/mail/spec/mail/elements/phrase_list_spec.rb +22 -0
  256. data/vendor/mail/spec/mail/elements/received_element_spec.rb +34 -0
  257. data/vendor/mail/spec/mail/encoding_spec.rb +189 -0
  258. data/vendor/mail/spec/mail/encodings/base64_spec.rb +25 -0
  259. data/vendor/mail/spec/mail/encodings/quoted_printable_spec.rb +25 -0
  260. data/vendor/mail/spec/mail/encodings_spec.rb +664 -0
  261. data/vendor/mail/spec/mail/example_emails_spec.rb +303 -0
  262. data/vendor/mail/spec/mail/field_list_spec.rb +33 -0
  263. data/vendor/mail/spec/mail/field_spec.rb +198 -0
  264. data/vendor/mail/spec/mail/fields/bcc_field_spec.rb +89 -0
  265. data/vendor/mail/spec/mail/fields/cc_field_spec.rb +79 -0
  266. data/vendor/mail/spec/mail/fields/comments_field_spec.rb +25 -0
  267. data/vendor/mail/spec/mail/fields/common/address_container_spec.rb +18 -0
  268. data/vendor/mail/spec/mail/fields/common/common_address_spec.rb +132 -0
  269. data/vendor/mail/spec/mail/fields/common/common_date_spec.rb +25 -0
  270. data/vendor/mail/spec/mail/fields/common/common_field_spec.rb +69 -0
  271. data/vendor/mail/spec/mail/fields/common/common_message_id_spec.rb +30 -0
  272. data/vendor/mail/spec/mail/fields/common/parameter_hash_spec.rb +56 -0
  273. data/vendor/mail/spec/mail/fields/content_description_field_spec.rb +39 -0
  274. data/vendor/mail/spec/mail/fields/content_disposition_field_spec.rb +55 -0
  275. data/vendor/mail/spec/mail/fields/content_id_field_spec.rb +117 -0
  276. data/vendor/mail/spec/mail/fields/content_location_field_spec.rb +46 -0
  277. data/vendor/mail/spec/mail/fields/content_transfer_encoding_field_spec.rb +113 -0
  278. data/vendor/mail/spec/mail/fields/content_type_field_spec.rb +678 -0
  279. data/vendor/mail/spec/mail/fields/date_field_spec.rb +73 -0
  280. data/vendor/mail/spec/mail/fields/envelope_spec.rb +48 -0
  281. data/vendor/mail/spec/mail/fields/from_field_spec.rb +89 -0
  282. data/vendor/mail/spec/mail/fields/in_reply_to_field_spec.rb +62 -0
  283. data/vendor/mail/spec/mail/fields/keywords_field_spec.rb +66 -0
  284. data/vendor/mail/spec/mail/fields/message_id_field_spec.rb +147 -0
  285. data/vendor/mail/spec/mail/fields/mime_version_field_spec.rb +166 -0
  286. data/vendor/mail/spec/mail/fields/received_field_spec.rb +44 -0
  287. data/vendor/mail/spec/mail/fields/references_field_spec.rb +35 -0
  288. data/vendor/mail/spec/mail/fields/reply_to_field_spec.rb +67 -0
  289. data/vendor/mail/spec/mail/fields/resent_bcc_field_spec.rb +66 -0
  290. data/vendor/mail/spec/mail/fields/resent_cc_field_spec.rb +66 -0
  291. data/vendor/mail/spec/mail/fields/resent_date_field_spec.rb +39 -0
  292. data/vendor/mail/spec/mail/fields/resent_from_field_spec.rb +66 -0
  293. data/vendor/mail/spec/mail/fields/resent_message_id_field_spec.rb +24 -0
  294. data/vendor/mail/spec/mail/fields/resent_sender_field_spec.rb +58 -0
  295. data/vendor/mail/spec/mail/fields/resent_to_field_spec.rb +66 -0
  296. data/vendor/mail/spec/mail/fields/return_path_field_spec.rb +52 -0
  297. data/vendor/mail/spec/mail/fields/sender_field_spec.rb +58 -0
  298. data/vendor/mail/spec/mail/fields/structured_field_spec.rb +72 -0
  299. data/vendor/mail/spec/mail/fields/to_field_spec.rb +92 -0
  300. data/vendor/mail/spec/mail/fields/unstructured_field_spec.rb +134 -0
  301. data/vendor/mail/spec/mail/header_spec.rb +578 -0
  302. data/vendor/mail/spec/mail/mail_spec.rb +34 -0
  303. data/vendor/mail/spec/mail/message_spec.rb +1409 -0
  304. data/vendor/mail/spec/mail/mime_messages_spec.rb +435 -0
  305. data/vendor/mail/spec/mail/multipart_report_spec.rb +112 -0
  306. data/vendor/mail/spec/mail/network/delivery_methods/file_delivery_spec.rb +79 -0
  307. data/vendor/mail/spec/mail/network/delivery_methods/sendmail_spec.rb +125 -0
  308. data/vendor/mail/spec/mail/network/delivery_methods/smtp_spec.rb +133 -0
  309. data/vendor/mail/spec/mail/network/delivery_methods/test_mailer_spec.rb +57 -0
  310. data/vendor/mail/spec/mail/network/retriever_methods/pop3_spec.rb +180 -0
  311. data/vendor/mail/spec/mail/network_spec.rb +359 -0
  312. data/vendor/mail/spec/mail/parsers/address_lists_parser_spec.rb +15 -0
  313. data/vendor/mail/spec/mail/parsers/content_transfer_encoding_parser_spec.rb +72 -0
  314. data/vendor/mail/spec/mail/part_spec.rb +129 -0
  315. data/vendor/mail/spec/mail/parts_list_spec.rb +12 -0
  316. data/vendor/mail/spec/mail/round_tripping_spec.rb +44 -0
  317. data/vendor/mail/spec/mail/utilities_spec.rb +327 -0
  318. data/vendor/mail/spec/mail/version_specific/escape_paren_1_8_spec.rb +32 -0
  319. data/vendor/mail/spec/matchers/break_down_to.rb +35 -0
  320. data/vendor/mail/spec/spec_helper.rb +163 -0
  321. metadata +442 -0
@@ -0,0 +1,166 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mail::MimeVersionField do
4
+ # MIME-Version Header Field
5
+ #
6
+ # Since RFC 822 was published in 1982, there has really been only one
7
+ # format standard for Internet messages, and there has been little
8
+ # perceived need to declare the format standard in use. This document
9
+ # is an independent specification that complements RFC 822. Although
10
+ # the extensions in this document have been defined in such a way as to
11
+ # be compatible with RFC 822, there are still circumstances in which it
12
+ # might be desirable for a mail-processing agent to know whether a
13
+ # message was composed with the new standard in mind.
14
+ #
15
+ # Therefore, this document defines a new header field, "MIME-Version",
16
+ # which is to be used to declare the version of the Internet message
17
+ # body format standard in use.
18
+ #
19
+ # Messages composed in aMimeVersionordance with this document MUST include such
20
+ # a header field, with the following verbatim text:
21
+ #
22
+ # MIME-Version: 1.0
23
+ #
24
+ # The presence of this header field is an assertion that the message
25
+ # has been composed in compliance with this document.
26
+ #
27
+ # Since it is possible that a future document might extend the message
28
+ # format standard again, a formal BNF is given for the content of the
29
+ # MIME-Version field:
30
+ #
31
+ # version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT
32
+ #
33
+ # Thus, future format specifiers, which might replace or extend "1.0",
34
+ # are constrained to be two integer fields, separated by a period. If
35
+ # a message is received with a MIME-version value other than "1.0", it
36
+ # cannot be assumed to conform with this document.
37
+ #
38
+ # Note that the MIME-Version header field is required at the top level
39
+ # of a message. It is not required for each body part of a multipart
40
+ # entity. It is required for the embedded headers of a body of type
41
+ # "message/rfc822" or "message/partial" if and only if the embedded
42
+ # message is itself claimed to be MIME-conformant.
43
+ #
44
+ # It is not possible to fully specify how a mail reader that conforms
45
+ # with MIME as defined in this document should treat a message that
46
+ # might arrive in the future with some value of MIME-Version other than
47
+ # "1.0".
48
+ #
49
+ # It is also worth noting that version control for specific media types
50
+ # is not aMimeVersionomplished using the MIME-Version mechanism. In particular,
51
+ # some formats (such as application/postscript) have version numbering
52
+ # conventions that are internal to the media format. Where such
53
+ # conventions exist, MIME does nothing to supersede them. Where no
54
+ # such conventions exist, a MIME media type might use a "version"
55
+ # parameter in the content-type field if necessary.
56
+ #
57
+ # NOTE TO IMPLEMENTORS: When checking MIME-Version values any RFC 822
58
+ # comment strings that are present must be ignored. In particular, the
59
+ # following four MIME-Version fields are equivalent:
60
+ #
61
+ # MIME-Version: 1.0
62
+ #
63
+ # MIME-Version: 1.0 (produced by MetaSend Vx.x)
64
+ #
65
+ # MIME-Version: (produced by MetaSend Vx.x) 1.0
66
+ #
67
+ # MIME-Version: 1.(produced by MetaSend Vx.x)0
68
+ #
69
+ # In the absence of a MIME-Version field, a receiving mail user agent
70
+ # (whether conforming to MIME requirements or not) may optionally
71
+ # choose to interpret the body of the message aMimeVersionording to local
72
+ # conventions. Many such conventions are currently in use and it
73
+ # should be noted that in practice non-MIME messages can contain just
74
+ # about anything.
75
+ #
76
+ # It is impossible to be certain that a non-MIME mail message is
77
+ # actually plain text in the US-ASCII character set since it might well
78
+ # be a message that, using some set of nonstandard local conventions
79
+ # that predate MIME, includes text in another character set or non-
80
+ # textual data presented in a manner that cannot be automatically
81
+ # recognized (e.g., a uuencoded compressed UNIX tar file).
82
+
83
+ describe "initialization" do
84
+
85
+ it "should initialize" do
86
+ doing { Mail::MimeVersionField.new("1.0") }.should_not raise_error
87
+ end
88
+
89
+ it "should accept a string with the field name" do
90
+ t = Mail::MimeVersionField.new('Mime-Version: 1.0')
91
+ t.name.should == 'Mime-Version'
92
+ t.value.should == '1.0'
93
+ end
94
+
95
+ it "should accept a string without the field name" do
96
+ t = Mail::MimeVersionField.new('1.0')
97
+ t.name.should == 'Mime-Version'
98
+ t.value.should == '1.0'
99
+ end
100
+
101
+ end
102
+
103
+ describe "parsing a version string" do
104
+ it "should get a major value" do
105
+ t = Mail::MimeVersionField.new('1.0')
106
+ t.major.should == 1
107
+ end
108
+
109
+ it "should get a minor value" do
110
+ t = Mail::MimeVersionField.new('1.0')
111
+ t.minor.should == 0
112
+ end
113
+
114
+ it "should get a version string" do
115
+ t = Mail::MimeVersionField.new('1.0')
116
+ t.version.should == '1.0'
117
+ end
118
+
119
+ it "should handle comments before the major version" do
120
+ t = Mail::MimeVersionField.new('(This is a comment) 1.0')
121
+ t.version.should == '1.0'
122
+ end
123
+
124
+ it "should handle comments before the major version without space" do
125
+ t = Mail::MimeVersionField.new('(This is a comment)1.0')
126
+ t.version.should == '1.0'
127
+ end
128
+
129
+ it "should handle comments after the major version without space" do
130
+ t = Mail::MimeVersionField.new('1(This is a comment).0')
131
+ t.version.should == '1.0'
132
+ end
133
+
134
+ it "should handle comments before the minor version without space" do
135
+ t = Mail::MimeVersionField.new('1.(This is a comment)0')
136
+ t.version.should == '1.0'
137
+ end
138
+
139
+ it "should handle comments after the minor version without space" do
140
+ t = Mail::MimeVersionField.new('1.0(This is a comment)')
141
+ t.version.should == '1.0'
142
+ end
143
+
144
+ it "should handle comments after the minor version" do
145
+ t = Mail::MimeVersionField.new('1.0 (This is a comment)')
146
+ t.version.should == '1.0'
147
+ end
148
+
149
+ it "should accept nil as a value" do
150
+ t = Mail::MimeVersionField.new(nil)
151
+ t.version.should_not be_nil
152
+ end
153
+
154
+ it "should provide an encoded value" do
155
+ t = Mail::MimeVersionField.new('1.0 (This is a comment)')
156
+ t.encoded.should == "Mime-Version: 1.0\r\n"
157
+ end
158
+
159
+ it "should provide an decoded value" do
160
+ t = Mail::MimeVersionField.new('1.0 (This is a comment)')
161
+ t.decoded.should == '1.0'
162
+ end
163
+
164
+ end
165
+
166
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Mail::ReceivedField do
5
+
6
+ it "should initialize" do
7
+ doing { Mail::ReceivedField.new("Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)") }.should_not raise_error
8
+ end
9
+
10
+ it "should be able to tell the time" do
11
+ Mail::ReceivedField.new("Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)").date_time.class.should == DateTime
12
+ end
13
+
14
+ it "should accept a string with the field name" do
15
+ t = Mail::ReceivedField.new('Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)')
16
+ t.name.should == 'Received'
17
+ t.value.should == 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)'
18
+ t.info.should == 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>'
19
+ t.date_time.should == ::DateTime.parse('10 May 2005 17:26:50 +0000 (GMT)')
20
+ end
21
+
22
+ it "should accept a string without the field name" do
23
+ t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)')
24
+ t.name.should == 'Received'
25
+ t.value.should == 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)'
26
+ t.info.should == 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>'
27
+ t.date_time.should == ::DateTime.parse('10 May 2005 17:26:50 +0000 (GMT)')
28
+ end
29
+
30
+ it "should provide an encoded value" do
31
+ t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)')
32
+ t.encoded.should == "Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000\r\n"
33
+ end
34
+
35
+ it "should provide an encoded value with correct timezone" do
36
+ t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 -0500 (EST)')
37
+ t.encoded.should == "Received: from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 -0500\r\n"
38
+ end
39
+
40
+ it "should provide an decoded value" do
41
+ t = Mail::ReceivedField.new('from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000 (GMT)')
42
+ t.decoded.should == 'from localhost (localhost [127.0.0.1]) by xxx.xxxxx.com (Postfix) with ESMTP id 50FD3A96F for <xxxx@xxxx.com>; Tue, 10 May 2005 17:26:50 +0000'
43
+ end
44
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ #
4
+ # The "References:" field will contain the contents of the parent's
5
+ # "References:" field (if any) followed by the contents of the parent's
6
+ # "Message-ID:" field (if any). If the parent message does not contain
7
+ # a "References:" field but does have an "In-Reply-To:" field
8
+ # containing a single message identifier, then the "References:" field
9
+ # will contain the contents of the parent's "In-Reply-To:" field
10
+ # followed by the contents of the parent's "Message-ID:" field (if
11
+ # any). If the parent has none of the "References:", "In-Reply-To:",
12
+ # or "Message-ID:" fields, then the new message will have no
13
+ # "References:" field.
14
+
15
+ describe Mail::ReferencesField do
16
+
17
+ it "should initialize" do
18
+ doing { Mail::ReferencesField.new("<1234@test.lindsaar.net>") }.should_not raise_error
19
+ end
20
+
21
+ it "should accept a string with the field name" do
22
+ t = Mail::ReferencesField.new('References: <1234@test.lindsaar.net>')
23
+ t.name.should == 'References'
24
+ t.value.should == '<1234@test.lindsaar.net>'
25
+ t.message_id.should == '1234@test.lindsaar.net'
26
+ end
27
+
28
+ it "should accept a string without the field name" do
29
+ t = Mail::ReferencesField.new('<1234@test.lindsaar.net>')
30
+ t.name.should == 'References'
31
+ t.value.should == '<1234@test.lindsaar.net>'
32
+ t.message_id.should == '1234@test.lindsaar.net'
33
+ end
34
+
35
+ end
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ #
4
+ # reply-to = "Reply-To:" address-list CRLF
5
+ #
6
+
7
+ describe Mail::ReplyToField do
8
+
9
+ describe "initialization" do
10
+
11
+ it "should initialize" do
12
+ doing { Mail::ReplyToField.new("ReplyTo", "Mikel") }.should_not raise_error
13
+ end
14
+
15
+ it "should mix in the CommonAddress module" do
16
+ Mail::ReplyToField.included_modules.should include(Mail::CommonAddress)
17
+ end
18
+
19
+ it "should accept a string with the field name" do
20
+ t = Mail::ReplyToField.new('Reply-To: Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
21
+ t.name.should == 'Reply-To'
22
+ t.value.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>'
23
+ end
24
+
25
+ it "should accept a string without the field name" do
26
+ t = Mail::ReplyToField.new('Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
27
+ t.name.should == 'Reply-To'
28
+ t.value.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>'
29
+ end
30
+
31
+ end
32
+
33
+ # Actual testing of CommonAddress methods oReplyTours in the address field spec file
34
+
35
+ describe "instance methods" do
36
+ it "should return an address" do
37
+ t = Mail::ReplyToField.new('Mikel Lindsaar <mikel@test.lindsaar.net>')
38
+ t.formatted.should == ['Mikel Lindsaar <mikel@test.lindsaar.net>']
39
+ end
40
+
41
+ it "should return two addresses" do
42
+ t = Mail::ReplyToField.new('Mikel Lindsaar <mikel@test.lindsaar.net>, Ada Lindsaar <ada@test.lindsaar.net>')
43
+ t.formatted.first.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>'
44
+ t.addresses.last.should == 'ada@test.lindsaar.net'
45
+ end
46
+
47
+ it "should return one address and a group" do
48
+ t = Mail::ReplyToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
49
+ t.addresses[0].should == 'sam@me.com'
50
+ t.addresses[1].should == 'mikel@me.com'
51
+ t.addresses[2].should == 'bob@you.com'
52
+ end
53
+
54
+ it "should return the formatted line on to_s" do
55
+ t = Mail::ReplyToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
56
+ t.value.should == 'sam@me.com, my_group: mikel@me.com, bob@you.com;'
57
+ end
58
+
59
+ it "should return the encoded line" do
60
+ t = Mail::ReplyToField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
61
+ t.encoded.should == "Reply-To: sam@me.com, \r\n\tmy_group: mikel@me.com, \r\n\tbob@you.com;\r\n"
62
+ end
63
+
64
+ end
65
+
66
+
67
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ #
4
+ # resent-bcc = "Resent-Bcc:" (address-list / [CFWS]) CRLF
5
+
6
+ describe Mail::ResentBccField do
7
+
8
+ describe "initialization" do
9
+
10
+ it "should initialize" do
11
+ doing { Mail::ResentBccField.new("ResentBcc", "Mikel") }.should_not raise_error
12
+ end
13
+
14
+ it "should mix in the CommonAddress module" do
15
+ Mail::ResentBccField.included_modules.should include(Mail::CommonAddress)
16
+ end
17
+
18
+ it "should accept a string with the field name" do
19
+ t = Mail::ResentBccField.new('Resent-Bcc: Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
20
+ t.name.should == 'Resent-Bcc'
21
+ t.value.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>'
22
+ end
23
+
24
+ it "should accept a string without the field name" do
25
+ t = Mail::ResentBccField.new('Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
26
+ t.name.should == 'Resent-Bcc'
27
+ t.value.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>'
28
+ end
29
+
30
+ end
31
+
32
+ # Actual testing of CommonAddress methods oResentBccurs in the address field spec file
33
+
34
+ describe "instance methods" do
35
+ it "should return an address" do
36
+ t = Mail::ResentBccField.new('Mikel Lindsaar <mikel@test.lindsaar.net>')
37
+ t.formatted.should == ['Mikel Lindsaar <mikel@test.lindsaar.net>']
38
+ end
39
+
40
+ it "should return two addresses" do
41
+ t = Mail::ResentBccField.new('Mikel Lindsaar <mikel@test.lindsaar.net>, Ada Lindsaar <ada@test.lindsaar.net>')
42
+ t.formatted.first.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>'
43
+ t.addresses.last.should == 'ada@test.lindsaar.net'
44
+ end
45
+
46
+ it "should return one address and a group" do
47
+ t = Mail::ResentBccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
48
+ t.addresses[0].should == 'sam@me.com'
49
+ t.addresses[1].should == 'mikel@me.com'
50
+ t.addresses[2].should == 'bob@you.com'
51
+ end
52
+
53
+ it "should return the formatted line on to_s" do
54
+ t = Mail::ResentBccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
55
+ t.value.should == 'sam@me.com, my_group: mikel@me.com, bob@you.com;'
56
+ end
57
+
58
+ it "should return the encoded line" do
59
+ t = Mail::ResentBccField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
60
+ t.encoded.should == "Resent-Bcc: sam@me.com, \r\n\tmy_group: mikel@me.com, \r\n\tbob@you.com;\r\n"
61
+ end
62
+
63
+ end
64
+
65
+
66
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ #
4
+ # resent-cc = "Resent-Cc:" address-list CRLF
5
+
6
+ describe Mail::ResentCcField do
7
+
8
+ describe "initialization" do
9
+
10
+ it "should initialize" do
11
+ doing { Mail::ResentCcField.new("ResentCc", "Mikel") }.should_not raise_error
12
+ end
13
+
14
+ it "should mix in the CommonAddress module" do
15
+ Mail::ResentCcField.included_modules.should include(Mail::CommonAddress)
16
+ end
17
+
18
+ it "should accept a string with the field name" do
19
+ t = Mail::ResentCcField.new('Resent-Cc: Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
20
+ t.name.should == 'Resent-Cc'
21
+ t.value.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>'
22
+ end
23
+
24
+ it "should accept a string without the field name" do
25
+ t = Mail::ResentCcField.new('Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
26
+ t.name.should == 'Resent-Cc'
27
+ t.value.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>'
28
+ end
29
+
30
+ end
31
+
32
+ # Actual testing of CommonAddress methods oResentCcurs in the address field spec file
33
+
34
+ describe "instance methods" do
35
+ it "should return an address" do
36
+ t = Mail::ResentCcField.new('Mikel Lindsaar <mikel@test.lindsaar.net>')
37
+ t.formatted.should == ['Mikel Lindsaar <mikel@test.lindsaar.net>']
38
+ end
39
+
40
+ it "should return two addresses" do
41
+ t = Mail::ResentCcField.new('Mikel Lindsaar <mikel@test.lindsaar.net>, Ada Lindsaar <ada@test.lindsaar.net>')
42
+ t.formatted.first.should == 'Mikel Lindsaar <mikel@test.lindsaar.net>'
43
+ t.addresses.last.should == 'ada@test.lindsaar.net'
44
+ end
45
+
46
+ it "should return one address and a group" do
47
+ t = Mail::ResentCcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
48
+ t.addresses[0].should == 'sam@me.com'
49
+ t.addresses[1].should == 'mikel@me.com'
50
+ t.addresses[2].should == 'bob@you.com'
51
+ end
52
+
53
+ it "should return the formatted line on to_s" do
54
+ t = Mail::ResentCcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
55
+ t.value.should == 'sam@me.com, my_group: mikel@me.com, bob@you.com;'
56
+ end
57
+
58
+ it "should return the encoded line" do
59
+ t = Mail::ResentCcField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
60
+ t.encoded.should == "Resent-Cc: sam@me.com, \r\n\tmy_group: mikel@me.com, \r\n\tbob@you.com;\r\n"
61
+ end
62
+
63
+ end
64
+
65
+
66
+ end