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,73 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Mail::DateField do
5
+ # The origination date field consists of the field name "Date" followed
6
+ # by a date-time specification.
7
+ #
8
+ # orig-date = "Date:" date-time CRLF
9
+ #
10
+ # The origination date specifies the date and time at which the creator
11
+ # of the message indicated that the message was complete and ready to
12
+ # enter the mail delivery system. For instance, this might be the time
13
+ # that a user pushes the "send" or "submit" button in an application
14
+ # program. In any case, it is specifically not intended to convey the
15
+ # time that the message is actually transported, but rather the time at
16
+ # which the human or other creator of the message has put the message
17
+ # into its final form, ready for transport. (For example, a portable
18
+ # computer user who is not connected to a network might queue a message
19
+ # for delivery. The origination date is intended to contain the date
20
+ # and time that the user queued the message, not the time when the user
21
+ # connected to the network to send the message.)
22
+
23
+ describe "initialization" do
24
+
25
+ it "should initialize" do
26
+ doing { Mail::DateField.new("12 Aug 2009 00:00:02 GMT") }.should_not raise_error
27
+ end
28
+
29
+ it "should be able to tell the time" do
30
+ Mail::DateField.new("12 Aug 2009 00:00:02 GMT").date_time.class.should == DateTime
31
+ end
32
+
33
+ it "should mix in the CommonAddress module" do
34
+ Mail::DateField.included_modules.should include(Mail::CommonDate)
35
+ end
36
+
37
+ it "should accept a string with the field name" do
38
+ t = Mail::DateField.new('Date: 12 Aug 2009 00:00:02 GMT')
39
+ t.name.should == 'Date'
40
+ t.value.should == 'Wed, 12 Aug 2009 00:00:02 +0000'
41
+ t.date_time.should == ::DateTime.parse('12 Aug 2009 00:00:02 GMT')
42
+ end
43
+
44
+ it "should accept a string without the field name" do
45
+ t = Mail::DateField.new('12 Aug 2009 00:00:02 GMT')
46
+ t.name.should == 'Date'
47
+ t.value.should == 'Wed, 12 Aug 2009 00:00:02 +0000'
48
+ t.date_time.should == ::DateTime.parse('12 Aug 2009 00:00:02 GMT')
49
+ end
50
+
51
+ it "should accept nil as a value" do
52
+ t = Mail::DateField.new(nil)
53
+ t.date_time.should_not be_nil
54
+ end
55
+
56
+ it "should allow us to encode an date field" do
57
+ field = Mail::DateField.new('12 Aug 2009 00:00:02 GMT')
58
+ field.encoded.should == "Date: Wed, 12 Aug 2009 00:00:02 +0000\r\n"
59
+ end
60
+
61
+ it "should allow us to decode an address field" do
62
+ field = Mail::DateField.new('12 Aug 2009 00:00:02 GMT')
63
+ field.decoded.should == "Wed, 12 Aug 2009 00:00:02 +0000"
64
+ end
65
+
66
+ it "should be able to parse a really bad spacing example" do
67
+ field = Mail::DateField.new("Fri, 21 Nov 1997 09(comment): 55 : 06 -0600")
68
+ field.decoded.should == "Fri, 21 Nov 1997 09:55:06 -0600"
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mail::Envelope do
4
+ # From RFC4155 The application/mbox Media Type
5
+ #
6
+ # o Each message in the mbox database MUST be immediately preceded
7
+ # by a single separator line, which MUST conform to the following
8
+ # syntax:
9
+ #
10
+ # The exact character sequence of "From";
11
+ #
12
+ # a single Space character (0x20);
13
+ #
14
+ # the email address of the message sender (as obtained from the
15
+ # message envelope or other authoritative source), conformant
16
+ # with the "addr-spec" syntax from RFC 2822;
17
+ #
18
+ # a single Space character;
19
+ #
20
+ # a timestamp indicating the UTC date and time when the message
21
+ # was originally received, conformant with the syntax of the
22
+ # traditional UNIX 'ctime' output sans timezone (note that the
23
+ # use of UTC precludes the need for a timezone indicator);
24
+ #
25
+ # an end-of-line marker.
26
+
27
+ it "should initialize" do
28
+ doing { Mail::Envelope.new('mikel@test.lindsaar.net Mon May 2 16:07:05 2005') }.should_not raise_error
29
+ end
30
+
31
+ it "should return the envelope from element tree" do
32
+ envelope = Mail::Envelope.new('mikel@test.lindsaar.net Mon May 2 16:07:05 2005')
33
+ envelope.tree.class.should == Treetop::Runtime::SyntaxNode
34
+ end
35
+
36
+ describe "accessor methods" do
37
+ it "should return the address" do
38
+ envelope = Mail::Envelope.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009")
39
+ envelope.from.should == "mikel@test.lindsaar.net"
40
+ end
41
+
42
+ it "should return the date_time" do
43
+ envelope = Mail::Envelope.new("mikel@test.lindsaar.net Mon Aug 17 00:39:21 2009")
44
+ envelope.date.should == ::DateTime.parse("Mon Aug 17 00:39:21 2009")
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,89 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ #
5
+ # from = "From:" mailbox-list CRLF
6
+
7
+ describe Mail::FromField do
8
+
9
+ describe "initialization" do
10
+
11
+ it "should initialize" do
12
+ doing { Mail::FromField.new("From", "Mikel") }.should_not raise_error
13
+ end
14
+
15
+ it "should mix in the CommonAddress module" do
16
+ Mail::FromField.included_modules.should include(Mail::CommonAddress)
17
+ end
18
+
19
+ it "should accept a string with the field name" do
20
+ t = Mail::FromField.new('From: Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
21
+ t.name.should == 'From'
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::FromField.new('Mikel Lindsaar <mikel@test.lindsaar.net>, "Bob Smith" <bob@me.com>')
27
+ t.name.should == 'From'
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 oFromurs in the address field spec file
34
+
35
+ describe "instance methods" do
36
+ it "should return an address" do
37
+ t = Mail::FromField.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::FromField.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::FromField.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::FromField.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::FromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
61
+ t.encoded.should == "From: sam@me.com, \r\n\tmy_group: mikel@me.com, \r\n\tbob@you.com;\r\n"
62
+ end
63
+
64
+ it "should return the encoded line" do
65
+ t = Mail::FromField.new("bob@me.com")
66
+ t.encoded.should == "From: bob@me.com\r\n"
67
+ end
68
+
69
+ it "should return the decoded line" do
70
+ t = Mail::FromField.new('sam@me.com, my_group: mikel@me.com, bob@you.com;')
71
+ t.decoded.should == "sam@me.com, my_group: mikel@me.com, bob@you.com;"
72
+ end
73
+
74
+ end
75
+
76
+ it "should handle non ascii" do
77
+ t = Mail::FromField.new('"Foo áëô îü" <extended@example.net>')
78
+ t.decoded.should == '"Foo áëô îü" <extended@example.net>'
79
+ t.encoded.should == "From: =?UTF-8?B?Rm9vIMOhw6vDtCDDrsO8?= <extended@example.net>\r\n"
80
+ end
81
+
82
+
83
+ it "should work without quotes" do
84
+ t = Mail::FromField.new('Foo áëô îü <extended@example.net>')
85
+ t.encoded.should == "From: Foo =?UTF-8?B?w6HDq8O0?= =?UTF-8?B?IMOuw7w=?= <extended@example.net>\r\n"
86
+ t.decoded.should == '"Foo áëô îü" <extended@example.net>'
87
+ end
88
+
89
+ end
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ #
4
+ # The "In-Reply-To:" field will contain the contents of the "Message-
5
+ # ID:" field of the message to which this one is a reply (the "parent
6
+ # message"). If there is more than one parent message, then the "In-
7
+ # Reply-To:" field will contain the contents of all of the parents'
8
+ # "Message-ID:" fields. If there is no "Message-ID:" field in any of
9
+ # the parent messages, then the new message will have no "In-Reply-To:"
10
+ # field.
11
+
12
+ describe Mail::InReplyToField do
13
+
14
+ describe "initialization" do
15
+ it "should initialize" do
16
+ doing { Mail::InReplyToField.new("<1234@test.lindsaar.net>") }.should_not raise_error
17
+ end
18
+
19
+ it "should accept a string with the field name" do
20
+ t = Mail::InReplyToField.new('In-Reply-To: <1234@test.lindsaar.net>')
21
+ t.name.should == 'In-Reply-To'
22
+ t.value.should == '<1234@test.lindsaar.net>'
23
+ t.message_id.should == '1234@test.lindsaar.net'
24
+ end
25
+
26
+ it "should accept a string without the field name" do
27
+ t = Mail::InReplyToField.new('<1234@test.lindsaar.net>')
28
+ t.name.should == 'In-Reply-To'
29
+ t.value.should == '<1234@test.lindsaar.net>'
30
+ t.message_id.should == '1234@test.lindsaar.net'
31
+ end
32
+
33
+ it "should provide encoded" do
34
+ t = Mail::InReplyToField.new('<1234@test.lindsaar.net>')
35
+ t.encoded.should == "In-Reply-To: <1234@test.lindsaar.net>\r\n"
36
+ end
37
+
38
+ it "should handle many encoded message IDs" do
39
+ t = Mail::InReplyToField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>')
40
+ t.encoded.should == "In-Reply-To: <1234@test.lindsaar.net>, <4567@test.lindsaar.net>\r\n"
41
+ end
42
+
43
+ it "should provide decoded" do
44
+ t = Mail::InReplyToField.new('<1234@test.lindsaar.net>')
45
+ t.decoded.should == "<1234@test.lindsaar.net>"
46
+ end
47
+
48
+ it "should handle many decoded message IDs" do
49
+ t = Mail::InReplyToField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>')
50
+ t.decoded.should == '<1234@test.lindsaar.net>, <4567@test.lindsaar.net>'
51
+ end
52
+
53
+ end
54
+
55
+ describe "handlign multiple message ids" do
56
+ it "should handle many message IDs" do
57
+ t = Mail::InReplyToField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>')
58
+ t.name.should == 'In-Reply-To'
59
+ t.message_ids.should == ['1234@test.lindsaar.net', '4567@test.lindsaar.net']
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Mail::KeywordsField do
5
+
6
+ describe "initializing" do
7
+
8
+ it "should initialize" do
9
+ doing { Mail::KeywordsField.new("this, is, email") }.should_not raise_error
10
+ end
11
+
12
+ it "should accept a string with the field name" do
13
+ k = Mail::KeywordsField.new('Keywords: these are keywords, so there')
14
+ k.name.should == 'Keywords'
15
+ k.value.should == 'these are keywords, so there'
16
+ end
17
+
18
+ it "should accept a string with the field name" do
19
+ k = Mail::KeywordsField.new('these are keywords, so there')
20
+ k.name.should == 'Keywords'
21
+ k.value.should == 'these are keywords, so there'
22
+ end
23
+
24
+ end
25
+
26
+ describe "giving a list of keywords" do
27
+ it "should return a list of keywords" do
28
+ k = Mail::KeywordsField.new('these are keywords, so there')
29
+ k.keywords.should == ['these are keywords', 'so there']
30
+ end
31
+
32
+ it "should handle phrases" do
33
+ k = Mail::KeywordsField.new('"these, are keywords", so there')
34
+ k.keywords.should == ['these, are keywords', 'so there']
35
+ end
36
+
37
+ it "should handle comments" do
38
+ k = Mail::KeywordsField.new('"these, are keywords", so there (This is an irrelevant comment)')
39
+ k.keywords.should == ['these, are keywords', 'so there (This is an irrelevant comment)']
40
+ end
41
+
42
+ it "should handle comments" do
43
+ k = Mail::KeywordsField.new('"these, are keywords", so there (This is an irrelevant comment)')
44
+ k.keywords.should == ['these, are keywords', 'so there (This is an irrelevant comment)']
45
+ end
46
+
47
+ it "should handle comments in quotes" do
48
+ k = Mail::KeywordsField.new('"these, are keywords (another comment to be ignored)", so there (This is an irrelevant comment)')
49
+ k.keywords.should == ['these, are keywords (another comment to be ignored)', 'so there (This is an irrelevant comment)']
50
+ end
51
+
52
+ end
53
+
54
+ describe "encoding and decoding" do
55
+ it "should encode" do
56
+ k = Mail::KeywordsField.new('these are keywords, so there')
57
+ k.encoded.should == "Keywords: these are keywords, so there\r\n"
58
+ end
59
+
60
+ it "should decode" do
61
+ k = Mail::KeywordsField.new('these are keywords, so there')
62
+ k.decoded.should == "these are keywords, so there"
63
+ end
64
+ end
65
+
66
+ end
@@ -0,0 +1,147 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ # 3.6.4. Identification fields
4
+ #
5
+ # Though optional, every message SHOULD have a "Message-ID:" field.
6
+ # Furthermore, reply messages SHOULD have "In-Reply-To:" and
7
+ # "References:" fields as appropriate, as described below.
8
+ #
9
+ # The "Message-ID:" field contains a single unique message identifier.
10
+ # The "References:" and "In-Reply-To:" field each contain one or more
11
+ # unique message identifiers, optionally separated by CFWS.
12
+ #
13
+ # The message identifier (msg-id) is similar in syntax to an angle-addr
14
+ # construct without the internal CFWS.
15
+ #
16
+ # message-id = "Message-ID:" msg-id CRLF
17
+ #
18
+ # in-reply-to = "In-Reply-To:" 1*msg-id CRLF
19
+ #
20
+ # references = "References:" 1*msg-id CRLF
21
+ #
22
+ # msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS]
23
+ #
24
+ # id-left = dot-atom-text / no-fold-quote / obs-id-left
25
+ #
26
+ # id-right = dot-atom-text / no-fold-literal / obs-id-right
27
+ #
28
+ # no-fold-quote = DQUOTE *(qtext / quoted-pair) DQUOTE
29
+ #
30
+ # no-fold-literal = "[" *(dtext / quoted-pair) "]"
31
+ #
32
+ # The "Message-ID:" field provides a unique message identifier that
33
+ # refers to a particular version of a particular message. The
34
+ # uniqueness of the message identifier is guaranteed by the host that
35
+ # generates it (see below). This message identifier is intended to be
36
+ # machine readable and not necessarily meaningful to humans. A message
37
+ # identifier pertains to exactly one instantiation of a particular
38
+ # message; subsequent revisions to the message each receive new message
39
+ # identifiers.
40
+ #
41
+ # Note: There are many instances when messages are "changed", but those
42
+ # changes do not constitute a new instantiation of that message, and
43
+ # therefore the message would not get a new message identifier. For
44
+ # example, when messages are introduced into the transport system, they
45
+ # are often prepended with additional header fields such as trace
46
+ # fields (described in section 3.6.7) and resent fields (described in
47
+ # section 3.6.6). The addition of such header fields does not change
48
+ # the identity of the message and therefore the original "Message-ID:"
49
+ # field is retained. In all cases, it is the meaning that the sender
50
+ # of the message wishes to convey (i.e., whether this is the same
51
+ # message or a different message) that determines whether or not the
52
+ # "Message-ID:" field changes, not any particular syntactic difference
53
+ # that appears (or does not appear) in the message.
54
+
55
+ describe Mail::MessageIdField do
56
+
57
+ describe "initialization" do
58
+
59
+ it "should initialize" do
60
+ doing { Mail::MessageIdField.new("<1234@test.lindsaar.net>") }.should_not raise_error
61
+ end
62
+
63
+ it "should accept a string with the field name" do
64
+ m = Mail::MessageIdField.new('Message-ID: <1234@test.lindsaar.net>')
65
+ m.name.should == 'Message-ID'
66
+ m.value.should == '<1234@test.lindsaar.net>'
67
+ m.message_id.should == '1234@test.lindsaar.net'
68
+ end
69
+
70
+ it "should accept a string without the field name" do
71
+ m = Mail::MessageIdField.new('<1234@test.lindsaar.net>')
72
+ m.name.should == 'Message-ID'
73
+ m.value.should == '<1234@test.lindsaar.net>'
74
+ m.message_id.should == '1234@test.lindsaar.net'
75
+ end
76
+
77
+ it "should accept a nil value and generate a message_id" do
78
+ m = Mail::MessageIdField.new(nil)
79
+ m.name.should == 'Message-ID'
80
+ m.value.should_not be_nil
81
+ end
82
+
83
+ end
84
+
85
+ describe "ensuring only one message ID" do
86
+
87
+ it "should not accept a string with multiple message IDs but only return the first" do
88
+ m = Mail::MessageIdField.new('<1234@test.lindsaar.net> <4567@test.lindsaar.net>')
89
+ m.name.should == 'Message-ID'
90
+ m.to_s.should == '<1234@test.lindsaar.net>'
91
+ m.message_id.should == '1234@test.lindsaar.net'
92
+ m.message_ids.should == ['1234@test.lindsaar.net']
93
+ end
94
+
95
+ it "should change the message id if given a new message id" do
96
+ m = Mail::MessageIdField.new('<1234@test.lindsaar.net>')
97
+ m.to_s.should == '<1234@test.lindsaar.net>'
98
+ m.value = '<4567@test.lindsaar.net>'
99
+ m.to_s.should == '<4567@test.lindsaar.net>'
100
+ end
101
+
102
+ end
103
+
104
+ describe "instance methods" do
105
+ it "should provide to_s" do
106
+ m = Mail::MessageIdField.new('<1234@test.lindsaar.net>')
107
+ m.to_s.should == '<1234@test.lindsaar.net>'
108
+ m.message_id.to_s.should == '1234@test.lindsaar.net'
109
+ end
110
+
111
+ it "should provide encoded" do
112
+ m = Mail::MessageIdField.new('<1234@test.lindsaar.net>')
113
+ m.encoded.should == "Message-ID: <1234@test.lindsaar.net>\r\n"
114
+ end
115
+
116
+ it "should provide decoded" do
117
+ m = Mail::MessageIdField.new('<1234@test.lindsaar.net>')
118
+ m.decoded.should == "<1234@test.lindsaar.net>"
119
+ end
120
+
121
+ it "should respond to :responsible_for?" do
122
+ m = Mail::MessageIdField.new('<1234@test.lindsaar.net>')
123
+ m.should respond_to(:responsible_for?)
124
+ end
125
+ end
126
+
127
+ describe "generating a message id" do
128
+ it "should generate a message ID if it has no value" do
129
+ m = Mail::MessageIdField.new
130
+ m.message_id.should_not be_blank
131
+ end
132
+
133
+ it "should generate a random message ID" do
134
+ m = Mail::MessageIdField.new
135
+ 1.upto(100) do
136
+ m.message_id.should_not == Mail::MessageIdField.new.message_id
137
+ end
138
+ end
139
+ end
140
+
141
+ describe "weird message IDs" do
142
+ it "should be able to parse <000701c874a6$3df7eaf0$b9e7c0d0$@geille@fiscon.com>" do
143
+ m = Mail::MessageIdField.new('<000701c874a6$3df7eaf0$b9e7c0d0$@geille@fiscon.com>')
144
+ m.message_id.should == '000701c874a6$3df7eaf0$b9e7c0d0$@geille@fiscon.com'
145
+ end
146
+ end
147
+ end