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,12 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "PartsList" do
6
+ it "should return itself on sort" do
7
+ p = Mail::PartsList.new
8
+ p << 2
9
+ p << 1
10
+ p.sort.class.should == Mail::PartsList
11
+ end
12
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe "Round Tripping" do
5
+
6
+ it "should round trip a basic email" do
7
+ mail = Mail.new('Subject: FooBar')
8
+ mail.body "This is Text"
9
+ parsed_mail = Mail.new(mail.to_s)
10
+ parsed_mail.subject.to_s.should == "FooBar"
11
+ parsed_mail.body.to_s.should == "This is Text"
12
+ end
13
+
14
+ it "should round trip a html multipart email" do
15
+ mail = Mail.new('Subject: FooBar')
16
+ mail.text_part = Mail::Part.new do
17
+ body "This is Text"
18
+ end
19
+ mail.html_part = Mail::Part.new do
20
+ content_type = "text/html; charset=US-ASCII"
21
+ body "<b>This is HTML</b>"
22
+ end
23
+ parsed_mail = Mail.new(mail.to_s)
24
+ parsed_mail.mime_type.should == 'multipart/alternative'
25
+ parsed_mail.boundary.should == mail.boundary
26
+ parsed_mail.parts.length.should == 2
27
+ parsed_mail.parts[0].body.to_s.should == "This is Text"
28
+ parsed_mail.parts[1].body.to_s.should == "<b>This is HTML</b>"
29
+ end
30
+
31
+ it "should round trip an email" do
32
+ initial = Mail.new do
33
+ to "mikel@test.lindsaar.net"
34
+ subject "testing round tripping"
35
+ body "Really testing round tripping."
36
+ from "system@test.lindsaar.net"
37
+ cc "nobody@test.lindsaar.net"
38
+ bcc "bob@test.lindsaar.net"
39
+ date Time.local(2009, 11, 6)
40
+ end
41
+ Mail.new(initial.encoded).encoded.should == initial.encoded
42
+ end
43
+
44
+ end
@@ -0,0 +1,327 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe "Utilities Module" do
5
+
6
+ include Mail::Utilities
7
+
8
+ describe "token safe" do
9
+
10
+ describe "checking" do
11
+ it "should return true if a string is token safe" do
12
+ token_safe?('.abc').should be_true
13
+ end
14
+
15
+ it "should return false if a string is token safe" do
16
+ token_safe?('?=abc').should be_false
17
+ end
18
+
19
+ it "should work with mb_chars" do
20
+ token_safe?('.abc'.mb_chars).should be_true
21
+ token_safe?('?=abc'.mb_chars).should be_false
22
+ end
23
+ end
24
+
25
+ describe "quoting" do
26
+ it "should return true if a string is token safe" do
27
+ quote_token('.abc').should == '.abc'
28
+ end
29
+
30
+ it "should return false if a string is token safe" do
31
+ quote_token('?=abc').should == '"?=abc"'
32
+ end
33
+
34
+ it "should work with mb_chars" do
35
+ quote_token('.abc'.mb_chars).should == '.abc'
36
+ quote_token('?=abc'.mb_chars).should == '"?=abc"'
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+ describe "atom safe" do
43
+
44
+ describe "checking" do
45
+ it "should return true if a string is token safe" do
46
+ atom_safe?('?=abc').should be_true
47
+ end
48
+
49
+ it "should return false if a string is token safe" do
50
+ atom_safe?('.abc').should be_false
51
+ end
52
+
53
+ it "should work with mb_chars" do
54
+ atom_safe?('?=abc'.mb_chars).should be_true
55
+ atom_safe?('.abc'.mb_chars).should be_false
56
+ end
57
+ end
58
+
59
+ describe "quoting" do
60
+ it "should return true if a string is token safe" do
61
+ quote_atom('?=abc').should == '?=abc'
62
+ end
63
+
64
+ it "should return false if a string is token safe" do
65
+ quote_atom('.abc').should == '".abc"'
66
+ end
67
+
68
+ it "should work with mb_chars" do
69
+ quote_atom('?=abc'.mb_chars).should == '?=abc'
70
+ quote_atom('.abc'.mb_chars).should == '".abc"'
71
+ end
72
+
73
+ it "should work with mb_chars" do
74
+ quote_atom('?=abc'.mb_chars).should == '?=abc'
75
+ quote_atom('.abc'.mb_chars).should == '".abc"'
76
+ end
77
+
78
+ it "should quote white space" do
79
+ quote_atom('ab abc'.mb_chars).should == '"ab abc"'
80
+ quote_atom("ab\ta\r\nbc".mb_chars).should == %{"ab\ta\r\nbc"}
81
+ end
82
+ end
83
+
84
+ end
85
+
86
+ describe "escaping parenthesies" do
87
+ it "should escape parens" do
88
+ test = 'This is not (escaped)'
89
+ result = 'This is not \(escaped\)'
90
+ escape_paren(test).should == result
91
+ end
92
+
93
+ it "should not double escape parens" do
94
+ test = 'This is not \(escaped\)'
95
+ result = 'This is not \(escaped\)'
96
+ escape_paren(test).should == result
97
+ end
98
+
99
+ it "should escape all parens" do
100
+ test = 'This is not \()escaped(\)'
101
+ result = 'This is not \(\)escaped\(\)'
102
+ escape_paren(test).should == result
103
+ end
104
+
105
+ end
106
+
107
+ describe "unescaping parenthesis" do
108
+
109
+ it "should work" do
110
+ test = '(This is a string)'
111
+ result = 'This is a string'
112
+ unparen(test).should == result
113
+ end
114
+
115
+ it "should work without parens" do
116
+ test = 'This is a string'
117
+ result = 'This is a string'
118
+ unparen(test).should == result
119
+ end
120
+
121
+ it "should work using ActiveSupport mb_chars" do
122
+ test = '(This is a string)'.mb_chars
123
+ result = 'This is a string'
124
+ unparen(test).should == result
125
+ end
126
+
127
+ it "should work without parens using ActiveSupport mb_chars" do
128
+ test = 'This is a string'.mb_chars
129
+ result = 'This is a string'
130
+ unparen(test).should == result
131
+ end
132
+
133
+ end
134
+
135
+ describe "unescaping brackets" do
136
+
137
+ it "should work" do
138
+ test = '<This is a string>'
139
+ result = 'This is a string'
140
+ unbracket(test).should == result
141
+ end
142
+
143
+ it "should work without brackets" do
144
+ test = 'This is a string'
145
+ result = 'This is a string'
146
+ unbracket(test).should == result
147
+ end
148
+
149
+ it "should work using ActiveSupport mb_chars" do
150
+ test = '<This is a string>'.mb_chars
151
+ result = 'This is a string'
152
+ unbracket(test).should == result
153
+ end
154
+
155
+ it "should work without parens using ActiveSupport mb_chars" do
156
+ test = 'This is a string'.mb_chars
157
+ result = 'This is a string'
158
+ unbracket(test).should == result
159
+ end
160
+
161
+ end
162
+
163
+ describe "quoting phrases" do
164
+ it "should quote a phrase if it is unsafe" do
165
+ test = 'this.needs quoting'
166
+ result = '"this.needs quoting"'
167
+ dquote(test).should == result
168
+ end
169
+
170
+ it "should properly quote a string, even if quoted but not escaped properly" do
171
+ test = '"this needs "escaping"'
172
+ result = '"this needs \"escaping"'
173
+ dquote(test).should == result
174
+ end
175
+
176
+ it "should quote correctly a phrase with an escaped quote in it" do
177
+ test = 'this needs \"quoting'
178
+ result = '"this needs \"quoting"'
179
+ dquote(test).should == result
180
+ end
181
+
182
+ it "should quote correctly a phrase with an escaped backslash followed by an escaped quote in it" do
183
+ test = 'this needs \\\"quoting'
184
+ result = '"this needs \\\"quoting"'
185
+ dquote(test).should == result
186
+ end
187
+ end
188
+
189
+
190
+ describe "parenthesizing phrases" do
191
+ it "should parenthesize a phrase" do
192
+ test = 'this.needs parenthesizing'
193
+ result = '(this.needs parenthesizing)'
194
+ paren(test).should == result
195
+ end
196
+
197
+ it "should properly parenthesize a string, and escape properly" do
198
+ test = 'this needs (escaping'
199
+ result = '(this needs \(escaping)'
200
+ paren(test).should == result
201
+ end
202
+
203
+ it "should properly parenthesize a string, and escape properly (other way)" do
204
+ test = 'this needs )escaping'
205
+ result = '(this needs \)escaping)'
206
+ paren(test).should == result
207
+ end
208
+
209
+ it "should properly parenthesize a string, even if parenthesized but not escaped properly" do
210
+ test = '(this needs (escaping)'
211
+ result = '(this needs \(escaping)'
212
+ paren(test).should == result
213
+ end
214
+
215
+ it "should properly parenthesize a string, even if parenthesized but not escaped properly (other way)" do
216
+ test = '(this needs )escaping)'
217
+ result = '(this needs \)escaping)'
218
+ paren(test).should == result
219
+ end
220
+
221
+ it "should parenthesize correctly a phrase with an escaped parentheses in it" do
222
+ test = 'this needs \(parenthesizing'
223
+ result = '(this needs \(parenthesizing)'
224
+ paren(test).should == result
225
+ end
226
+
227
+ it "should parenthesize correctly a phrase with an escaped parentheses in it (other way)" do
228
+ test = 'this needs \)parenthesizing'
229
+ result = '(this needs \)parenthesizing)'
230
+ paren(test).should == result
231
+ end
232
+
233
+ it "should parenthesize correctly a phrase with an escaped backslash followed by an escaped parentheses in it" do
234
+ test = 'this needs \\\(parenthesizing'
235
+ result = '(this needs \\\(parenthesizing)'
236
+ paren(test).should == result
237
+ end
238
+
239
+ it "should parenthesize correctly a phrase with an escaped backslash followed by an escaped parentheses in it (other way)" do
240
+ test = 'this needs \\\)parenthesizing'
241
+ result = '(this needs \\\)parenthesizing)'
242
+ paren(test).should == result
243
+ end
244
+
245
+ it "should parenthesize correctly a phrase with a set of parentheses" do
246
+ test = 'this (needs) parenthesizing'
247
+ result = '(this \(needs\) parenthesizing)'
248
+ paren(test).should == result
249
+ end
250
+
251
+ end
252
+
253
+
254
+ describe "bracketizing phrases" do
255
+ it "should bracketize a phrase" do
256
+ test = 'this.needs bracketizing'
257
+ result = '<this.needs bracketizing>'
258
+ bracket(test).should == result
259
+ end
260
+
261
+ it "should properly bracketize a string, and escape properly" do
262
+ test = 'this needs <escaping'
263
+ result = '<this needs \<escaping>'
264
+ bracket(test).should == result
265
+ end
266
+
267
+ it "should properly bracketize a string, and escape properly (other way)" do
268
+ test = 'this needs >escaping'
269
+ result = '<this needs \>escaping>'
270
+ bracket(test).should == result
271
+ end
272
+
273
+ it "should properly bracketize a string, even if bracketized but not escaped properly" do
274
+ test = '<this needs <escaping>'
275
+ result = '<this needs \<escaping>'
276
+ bracket(test).should == result
277
+ end
278
+
279
+ it "should properly bracketize a string, even if bracketized but not escaped properly (other way)" do
280
+ test = '<this needs >escaping>'
281
+ result = '<this needs \>escaping>'
282
+ bracket(test).should == result
283
+ end
284
+
285
+ it "should bracketize correctly a phrase with an escaped brackets in it" do
286
+ test = 'this needs \<bracketizing'
287
+ result = '<this needs \<bracketizing>'
288
+ bracket(test).should == result
289
+ end
290
+
291
+ it "should bracketize correctly a phrase with an escaped brackets in it (other way)" do
292
+ test = 'this needs \>bracketizing'
293
+ result = '<this needs \>bracketizing>'
294
+ bracket(test).should == result
295
+ end
296
+
297
+ it "should bracketize correctly a phrase with an escaped backslash followed by an escaped brackets in it" do
298
+ test = 'this needs \\\<bracketizing'
299
+ result = '<this needs \\\<bracketizing>'
300
+ bracket(test).should == result
301
+ end
302
+
303
+ it "should bracketize correctly a phrase with an escaped backslash followed by an escaped brackets in it (other way)" do
304
+ test = 'this needs \\\>bracketizing'
305
+ result = '<this needs \\\>bracketizing>'
306
+ bracket(test).should == result
307
+ end
308
+
309
+ it "should bracketize correctly a phrase with a set of brackets" do
310
+ test = 'this <needs> bracketizing'
311
+ result = '<this \<needs\> bracketizing>'
312
+ bracket(test).should == result
313
+ end
314
+
315
+ end
316
+
317
+ describe "url escaping" do
318
+ it "should have a wrapper on URI.escape" do
319
+ uri_escape("@?@!").should == URI.escape("@?@!")
320
+ end
321
+
322
+ it "should have a wrapper on URI.unescape" do
323
+ uri_unescape("@?@!").should == URI.unescape("@?@!")
324
+ end
325
+ end
326
+
327
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe "Ruby 1.8 Extensions" do
5
+
6
+ describe "string ascii detection" do
7
+ it "should say it is US-ASCII only if it is" do
8
+ "abc".should be_ascii_only
9
+ end
10
+
11
+ it "should not say it is US-ASCII only if it isn't" do
12
+ "かきくけこ".should_not be_ascii_only
13
+ end
14
+
15
+ it "should not say it is US-ASCII only if it is a mix" do
16
+ "abcかきくけこ123".should_not be_ascii_only
17
+ end
18
+
19
+ it "should handle edge cases" do
20
+ ["\x00", "\x01", "\x40", "\x7f", "\x73"].each do |str|
21
+ str.should be_ascii_only
22
+ end
23
+
24
+ ["\x81", "\x99", "\xFF"].each do |str|
25
+ str.should_not be_ascii_only
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+
32
+
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+ module CustomMatchers
3
+ class BreakDownTo
4
+ def initialize(expected)
5
+ @expected = expected
6
+ end
7
+
8
+ def matches?(target)
9
+ @target = target
10
+ @failed = false
11
+ @expected.each_pair do |k,v|
12
+ unless @target.send(k) == @expected[k]
13
+ @failed = k
14
+ end
15
+ end
16
+ !@failed
17
+ end
18
+
19
+ def failure_message
20
+ "expected #{@failed} to be |#{@expected[@failed]}| " +
21
+ "but was |#{@target.send(@failed)}|"
22
+ end
23
+
24
+ def megative_failure_message
25
+ "expected #{@failed} not to be |#{@expected[@failed]}| " +
26
+ "and was |#{@target.send(@failed)}|"
27
+ end
28
+
29
+ end
30
+
31
+ # Actual matcher that is exposed.
32
+ def break_down_to(expected)
33
+ BreakDownTo.new(expected)
34
+ end
35
+ end