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.
- data/.document +5 -0
- data/.gitignore +22 -0
- data/LICENSE +20 -0
- data/README.rdoc +38 -0
- data/Rakefile +56 -0
- data/VERSION +1 -0
- data/lib/rack/mail_exception.rb +103 -0
- data/test/helper.rb +13 -0
- data/test/test_rack_mail_exception.rb +93 -0
- data/vendor/mail/.bundle/config +2 -0
- data/vendor/mail/CHANGELOG.rdoc +370 -0
- data/vendor/mail/Dependencies.txt +3 -0
- data/vendor/mail/Gemfile +17 -0
- data/vendor/mail/README.rdoc +572 -0
- data/vendor/mail/ROADMAP +92 -0
- data/vendor/mail/Rakefile +41 -0
- data/vendor/mail/TODO.rdoc +9 -0
- data/vendor/mail/lib/mail.rb +76 -0
- data/vendor/mail/lib/mail/attachments_list.rb +99 -0
- data/vendor/mail/lib/mail/body.rb +287 -0
- data/vendor/mail/lib/mail/configuration.rb +67 -0
- data/vendor/mail/lib/mail/core_extensions/blank.rb +26 -0
- data/vendor/mail/lib/mail/core_extensions/nil.rb +11 -0
- data/vendor/mail/lib/mail/core_extensions/string.rb +27 -0
- data/vendor/mail/lib/mail/elements.rb +14 -0
- data/vendor/mail/lib/mail/elements/address.rb +306 -0
- data/vendor/mail/lib/mail/elements/address_list.rb +74 -0
- data/vendor/mail/lib/mail/elements/content_disposition_element.rb +30 -0
- data/vendor/mail/lib/mail/elements/content_location_element.rb +25 -0
- data/vendor/mail/lib/mail/elements/content_transfer_encoding_element.rb +24 -0
- data/vendor/mail/lib/mail/elements/content_type_element.rb +35 -0
- data/vendor/mail/lib/mail/elements/date_time_element.rb +26 -0
- data/vendor/mail/lib/mail/elements/envelope_from_element.rb +34 -0
- data/vendor/mail/lib/mail/elements/message_ids_element.rb +29 -0
- data/vendor/mail/lib/mail/elements/mime_version_element.rb +26 -0
- data/vendor/mail/lib/mail/elements/phrase_list.rb +21 -0
- data/vendor/mail/lib/mail/elements/received_element.rb +30 -0
- data/vendor/mail/lib/mail/encodings.rb +258 -0
- data/vendor/mail/lib/mail/encodings/7bit.rb +31 -0
- data/vendor/mail/lib/mail/encodings/8bit.rb +31 -0
- data/vendor/mail/lib/mail/encodings/base64.rb +33 -0
- data/vendor/mail/lib/mail/encodings/binary.rb +31 -0
- data/vendor/mail/lib/mail/encodings/quoted_printable.rb +38 -0
- data/vendor/mail/lib/mail/encodings/transfer_encoding.rb +58 -0
- data/vendor/mail/lib/mail/envelope.rb +35 -0
- data/vendor/mail/lib/mail/field.rb +223 -0
- data/vendor/mail/lib/mail/field_list.rb +33 -0
- data/vendor/mail/lib/mail/fields.rb +35 -0
- data/vendor/mail/lib/mail/fields/bcc_field.rb +56 -0
- data/vendor/mail/lib/mail/fields/cc_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/comments_field.rb +41 -0
- data/vendor/mail/lib/mail/fields/common/address_container.rb +16 -0
- data/vendor/mail/lib/mail/fields/common/common_address.rb +125 -0
- data/vendor/mail/lib/mail/fields/common/common_date.rb +42 -0
- data/vendor/mail/lib/mail/fields/common/common_field.rb +50 -0
- data/vendor/mail/lib/mail/fields/common/common_message_id.rb +43 -0
- data/vendor/mail/lib/mail/fields/common/parameter_hash.rb +52 -0
- data/vendor/mail/lib/mail/fields/content_description_field.rb +19 -0
- data/vendor/mail/lib/mail/fields/content_disposition_field.rb +69 -0
- data/vendor/mail/lib/mail/fields/content_id_field.rb +63 -0
- data/vendor/mail/lib/mail/fields/content_location_field.rb +42 -0
- data/vendor/mail/lib/mail/fields/content_transfer_encoding_field.rb +50 -0
- data/vendor/mail/lib/mail/fields/content_type_field.rb +185 -0
- data/vendor/mail/lib/mail/fields/date_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/from_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/in_reply_to_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/keywords_field.rb +44 -0
- data/vendor/mail/lib/mail/fields/message_id_field.rb +83 -0
- data/vendor/mail/lib/mail/fields/mime_version_field.rb +53 -0
- data/vendor/mail/lib/mail/fields/optional_field.rb +13 -0
- data/vendor/mail/lib/mail/fields/received_field.rb +67 -0
- data/vendor/mail/lib/mail/fields/references_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/reply_to_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/resent_bcc_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/resent_cc_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/resent_date_field.rb +35 -0
- data/vendor/mail/lib/mail/fields/resent_from_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/resent_message_id_field.rb +34 -0
- data/vendor/mail/lib/mail/fields/resent_sender_field.rb +62 -0
- data/vendor/mail/lib/mail/fields/resent_to_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/return_path_field.rb +64 -0
- data/vendor/mail/lib/mail/fields/sender_field.rb +67 -0
- data/vendor/mail/lib/mail/fields/structured_field.rb +51 -0
- data/vendor/mail/lib/mail/fields/subject_field.rb +16 -0
- data/vendor/mail/lib/mail/fields/to_field.rb +55 -0
- data/vendor/mail/lib/mail/fields/unstructured_field.rb +166 -0
- data/vendor/mail/lib/mail/header.rb +262 -0
- data/vendor/mail/lib/mail/mail.rb +234 -0
- data/vendor/mail/lib/mail/message.rb +1867 -0
- data/vendor/mail/lib/mail/network.rb +9 -0
- data/vendor/mail/lib/mail/network/delivery_methods/file_delivery.rb +40 -0
- data/vendor/mail/lib/mail/network/delivery_methods/sendmail.rb +62 -0
- data/vendor/mail/lib/mail/network/delivery_methods/smtp.rb +110 -0
- data/vendor/mail/lib/mail/network/delivery_methods/test_mailer.rb +40 -0
- data/vendor/mail/lib/mail/network/retriever_methods/imap.rb +18 -0
- data/vendor/mail/lib/mail/network/retriever_methods/pop3.rb +149 -0
- data/vendor/mail/lib/mail/parsers/address_lists.rb +64 -0
- data/vendor/mail/lib/mail/parsers/address_lists.treetop +19 -0
- data/vendor/mail/lib/mail/parsers/content_disposition.rb +387 -0
- data/vendor/mail/lib/mail/parsers/content_disposition.treetop +46 -0
- data/vendor/mail/lib/mail/parsers/content_location.rb +139 -0
- data/vendor/mail/lib/mail/parsers/content_location.treetop +20 -0
- data/vendor/mail/lib/mail/parsers/content_transfer_encoding.rb +162 -0
- data/vendor/mail/lib/mail/parsers/content_transfer_encoding.treetop +20 -0
- data/vendor/mail/lib/mail/parsers/content_type.rb +539 -0
- data/vendor/mail/lib/mail/parsers/content_type.treetop +58 -0
- data/vendor/mail/lib/mail/parsers/date_time.rb +114 -0
- data/vendor/mail/lib/mail/parsers/date_time.treetop +11 -0
- data/vendor/mail/lib/mail/parsers/envelope_from.rb +194 -0
- data/vendor/mail/lib/mail/parsers/envelope_from.treetop +32 -0
- data/vendor/mail/lib/mail/parsers/message_ids.rb +45 -0
- data/vendor/mail/lib/mail/parsers/message_ids.treetop +15 -0
- data/vendor/mail/lib/mail/parsers/mime_version.rb +144 -0
- data/vendor/mail/lib/mail/parsers/mime_version.treetop +19 -0
- data/vendor/mail/lib/mail/parsers/phrase_lists.rb +45 -0
- data/vendor/mail/lib/mail/parsers/phrase_lists.treetop +15 -0
- data/vendor/mail/lib/mail/parsers/received.rb +71 -0
- data/vendor/mail/lib/mail/parsers/received.treetop +11 -0
- data/vendor/mail/lib/mail/parsers/rfc2045.rb +464 -0
- data/vendor/mail/lib/mail/parsers/rfc2045.treetop +36 -0
- data/vendor/mail/lib/mail/parsers/rfc2822.rb +5318 -0
- data/vendor/mail/lib/mail/parsers/rfc2822.treetop +410 -0
- data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.rb +3757 -0
- data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.treetop +241 -0
- data/vendor/mail/lib/mail/part.rb +102 -0
- data/vendor/mail/lib/mail/parts_list.rb +34 -0
- data/vendor/mail/lib/mail/patterns.rb +30 -0
- data/vendor/mail/lib/mail/utilities.rb +181 -0
- data/vendor/mail/lib/mail/version.rb +10 -0
- data/vendor/mail/lib/mail/version_specific/ruby_1_8.rb +97 -0
- data/vendor/mail/lib/mail/version_specific/ruby_1_9.rb +87 -0
- data/vendor/mail/lib/tasks/corpus.rake +125 -0
- data/vendor/mail/lib/tasks/treetop.rake +10 -0
- data/vendor/mail/mail.gemspec +20 -0
- data/vendor/mail/reference/US ASCII Table.txt +130 -0
- data/vendor/mail/reference/rfc1035 Domain Implementation and Specification.txt +3083 -0
- data/vendor/mail/reference/rfc1049 Content-Type Header Field for Internet Messages.txt +451 -0
- data/vendor/mail/reference/rfc1344 Implications of MIME for Internet Mail Gateways.txt +586 -0
- data/vendor/mail/reference/rfc1345 Character Mnemonics & Character Sets.txt +5761 -0
- data/vendor/mail/reference/rfc1524 A User Agent Configuration Mechanism For Multimedia Mail Format Information.txt +675 -0
- data/vendor/mail/reference/rfc1652 SMTP Service Extension for 8bit-MIMEtransport.txt +339 -0
- data/vendor/mail/reference/rfc1892 Multipart Report .txt +227 -0
- data/vendor/mail/reference/rfc1893 Mail System Status Codes.txt +843 -0
- data/vendor/mail/reference/rfc2045 Multipurpose Internet Mail Extensions (1).txt +1739 -0
- data/vendor/mail/reference/rfc2046 Multipurpose Internet Mail Extensions (2).txt +2467 -0
- data/vendor/mail/reference/rfc2047 Multipurpose Internet Mail Extensions (3).txt +843 -0
- data/vendor/mail/reference/rfc2048 Multipurpose Internet Mail Extensions (4).txt +1180 -0
- data/vendor/mail/reference/rfc2049 Multipurpose Internet Mail Extensions (5).txt +1347 -0
- data/vendor/mail/reference/rfc2111 Content-ID and Message-ID URLs.txt +283 -0
- data/vendor/mail/reference/rfc2183 Content-Disposition Header Field.txt +675 -0
- data/vendor/mail/reference/rfc2231 MIME Parameter Value and Encoded Word Extensions.txt +563 -0
- data/vendor/mail/reference/rfc2387 MIME Multipart-Related Content-type.txt +563 -0
- data/vendor/mail/reference/rfc2821 Simple Mail Transfer Protocol.txt +3711 -0
- data/vendor/mail/reference/rfc2822 Internet Message Format.txt +2859 -0
- data/vendor/mail/reference/rfc3462 Reporting of Mail System Administrative Messages.txt +396 -0
- data/vendor/mail/reference/rfc3696 Checking and Transformation of Names.txt +898 -0
- data/vendor/mail/reference/rfc4155 The application-mbox Media Type.txt +502 -0
- data/vendor/mail/reference/rfc4234 Augmented BNF for Syntax Specifications: ABNF.txt +899 -0
- data/vendor/mail/reference/rfc822 Standard for the Format of ARPA Internet Text Messages.txt +2900 -0
- data/vendor/mail/spec/environment.rb +15 -0
- data/vendor/mail/spec/features/making_a_new_message.feature +14 -0
- data/vendor/mail/spec/features/steps/env.rb +6 -0
- data/vendor/mail/spec/features/steps/making_a_new_message_steps.rb +11 -0
- data/vendor/mail/spec/fixtures/attachments/basic_email.eml +31 -0
- data/vendor/mail/spec/fixtures/attachments/test.gif +0 -0
- data/vendor/mail/spec/fixtures/attachments/test.jpg +0 -0
- data/vendor/mail/spec/fixtures/attachments/test.pdf +0 -0
- data/vendor/mail/spec/fixtures/attachments/test.png +0 -0
- data/vendor/mail/spec/fixtures/attachments/test.tiff +0 -0
- data/vendor/mail/spec/fixtures/attachments/test.zip +0 -0
- data/vendor/mail/spec/fixtures/attachments//343/201/246/343/201/231/343/201/250.txt +2 -0
- data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_disposition.eml +29 -0
- data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_location.eml +32 -0
- data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_message_rfc822.eml +92 -0
- data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_only_email.eml +17 -0
- data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_pdf.eml +70 -0
- data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_encoded_name.eml +47 -0
- data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_quoted_filename.eml +60 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/cant_parse_from.eml +33 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_7-bit.eml +231 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_empty.eml +33 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_plain.eml +148 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_qp_with_space.eml +53 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_spam.eml +44 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_text-html.eml +50 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_8bits.eml +770 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_semi_colon.eml +269 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_x_uuencode.eml +79 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/empty_group_lists.eml +162 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/header_fields_with_empty_values.eml +33 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/missing_body.eml +16 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/missing_content_disposition.eml +43 -0
- data/vendor/mail/spec/fixtures/emails/error_emails/multiple_content_types.eml +25 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email11.eml +34 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email12.eml +32 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email2.eml +114 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email4.eml +59 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email7.eml +66 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_encoded_stack_level_too_deep.eml +53 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_illegal_boundary.eml +58 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_mimepart_without_content_type.eml +94 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_multipart_mixed_quoted_boundary.eml +50 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_nested_attachment.eml +100 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_quoted_illegal_boundary.eml +58 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/sig_only_email.eml +29 -0
- data/vendor/mail/spec/fixtures/emails/mime_emails/two_from_in_message.eml +42 -0
- data/vendor/mail/spec/fixtures/emails/multi_charset/japanese.eml +9 -0
- data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment.eml +27 -0
- data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment_long_name.eml +44 -0
- data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce1.eml +179 -0
- data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce2.eml +179 -0
- data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_422.eml +98 -0
- data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_530.eml +97 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/basic_email.eml +31 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email.eml +14 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email10.eml +20 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email5.eml +19 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email6.eml +20 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email8.eml +47 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_bad_time.eml +62 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_double_at_in_header.eml +14 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_incorrect_header.eml +28 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_multiple_from.eml +30 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_quoted_with_0d0a.eml +14 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_reply.eml +32 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_simple.eml +11 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_string_in_date_field.eml +17 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_trailing_dot.eml +21 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_bad_date.eml +48 -0
- data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_partially_quoted_subject.eml +14 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example01.eml +8 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example02.eml +9 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example03.eml +7 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example04.eml +7 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example05.eml +8 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example06.eml +10 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example07.eml +9 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example08.eml +12 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example09.eml +15 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example10.eml +15 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example11.eml +6 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example12.eml +8 -0
- data/vendor/mail/spec/fixtures/emails/rfc2822/example13.eml +10 -0
- data/vendor/mail/spec/fixtures/emails/sample_output_multipart +0 -0
- data/vendor/mail/spec/mail/attachments_list_spec.rb +214 -0
- data/vendor/mail/spec/mail/body_spec.rb +385 -0
- data/vendor/mail/spec/mail/configuration_spec.rb +19 -0
- data/vendor/mail/spec/mail/core_extensions/string_spec.rb +62 -0
- data/vendor/mail/spec/mail/core_extensions_spec.rb +99 -0
- data/vendor/mail/spec/mail/elements/address_list_spec.rb +109 -0
- data/vendor/mail/spec/mail/elements/address_spec.rb +609 -0
- data/vendor/mail/spec/mail/elements/date_time_element_spec.rb +20 -0
- data/vendor/mail/spec/mail/elements/envelope_from_element_spec.rb +31 -0
- data/vendor/mail/spec/mail/elements/message_ids_element_spec.rb +43 -0
- data/vendor/mail/spec/mail/elements/phrase_list_spec.rb +22 -0
- data/vendor/mail/spec/mail/elements/received_element_spec.rb +34 -0
- data/vendor/mail/spec/mail/encoding_spec.rb +189 -0
- data/vendor/mail/spec/mail/encodings/base64_spec.rb +25 -0
- data/vendor/mail/spec/mail/encodings/quoted_printable_spec.rb +25 -0
- data/vendor/mail/spec/mail/encodings_spec.rb +664 -0
- data/vendor/mail/spec/mail/example_emails_spec.rb +303 -0
- data/vendor/mail/spec/mail/field_list_spec.rb +33 -0
- data/vendor/mail/spec/mail/field_spec.rb +198 -0
- data/vendor/mail/spec/mail/fields/bcc_field_spec.rb +89 -0
- data/vendor/mail/spec/mail/fields/cc_field_spec.rb +79 -0
- data/vendor/mail/spec/mail/fields/comments_field_spec.rb +25 -0
- data/vendor/mail/spec/mail/fields/common/address_container_spec.rb +18 -0
- data/vendor/mail/spec/mail/fields/common/common_address_spec.rb +132 -0
- data/vendor/mail/spec/mail/fields/common/common_date_spec.rb +25 -0
- data/vendor/mail/spec/mail/fields/common/common_field_spec.rb +69 -0
- data/vendor/mail/spec/mail/fields/common/common_message_id_spec.rb +30 -0
- data/vendor/mail/spec/mail/fields/common/parameter_hash_spec.rb +56 -0
- data/vendor/mail/spec/mail/fields/content_description_field_spec.rb +39 -0
- data/vendor/mail/spec/mail/fields/content_disposition_field_spec.rb +55 -0
- data/vendor/mail/spec/mail/fields/content_id_field_spec.rb +117 -0
- data/vendor/mail/spec/mail/fields/content_location_field_spec.rb +46 -0
- data/vendor/mail/spec/mail/fields/content_transfer_encoding_field_spec.rb +113 -0
- data/vendor/mail/spec/mail/fields/content_type_field_spec.rb +678 -0
- data/vendor/mail/spec/mail/fields/date_field_spec.rb +73 -0
- data/vendor/mail/spec/mail/fields/envelope_spec.rb +48 -0
- data/vendor/mail/spec/mail/fields/from_field_spec.rb +89 -0
- data/vendor/mail/spec/mail/fields/in_reply_to_field_spec.rb +62 -0
- data/vendor/mail/spec/mail/fields/keywords_field_spec.rb +66 -0
- data/vendor/mail/spec/mail/fields/message_id_field_spec.rb +147 -0
- data/vendor/mail/spec/mail/fields/mime_version_field_spec.rb +166 -0
- data/vendor/mail/spec/mail/fields/received_field_spec.rb +44 -0
- data/vendor/mail/spec/mail/fields/references_field_spec.rb +35 -0
- data/vendor/mail/spec/mail/fields/reply_to_field_spec.rb +67 -0
- data/vendor/mail/spec/mail/fields/resent_bcc_field_spec.rb +66 -0
- data/vendor/mail/spec/mail/fields/resent_cc_field_spec.rb +66 -0
- data/vendor/mail/spec/mail/fields/resent_date_field_spec.rb +39 -0
- data/vendor/mail/spec/mail/fields/resent_from_field_spec.rb +66 -0
- data/vendor/mail/spec/mail/fields/resent_message_id_field_spec.rb +24 -0
- data/vendor/mail/spec/mail/fields/resent_sender_field_spec.rb +58 -0
- data/vendor/mail/spec/mail/fields/resent_to_field_spec.rb +66 -0
- data/vendor/mail/spec/mail/fields/return_path_field_spec.rb +52 -0
- data/vendor/mail/spec/mail/fields/sender_field_spec.rb +58 -0
- data/vendor/mail/spec/mail/fields/structured_field_spec.rb +72 -0
- data/vendor/mail/spec/mail/fields/to_field_spec.rb +92 -0
- data/vendor/mail/spec/mail/fields/unstructured_field_spec.rb +134 -0
- data/vendor/mail/spec/mail/header_spec.rb +578 -0
- data/vendor/mail/spec/mail/mail_spec.rb +34 -0
- data/vendor/mail/spec/mail/message_spec.rb +1409 -0
- data/vendor/mail/spec/mail/mime_messages_spec.rb +435 -0
- data/vendor/mail/spec/mail/multipart_report_spec.rb +112 -0
- data/vendor/mail/spec/mail/network/delivery_methods/file_delivery_spec.rb +79 -0
- data/vendor/mail/spec/mail/network/delivery_methods/sendmail_spec.rb +125 -0
- data/vendor/mail/spec/mail/network/delivery_methods/smtp_spec.rb +133 -0
- data/vendor/mail/spec/mail/network/delivery_methods/test_mailer_spec.rb +57 -0
- data/vendor/mail/spec/mail/network/retriever_methods/pop3_spec.rb +180 -0
- data/vendor/mail/spec/mail/network_spec.rb +359 -0
- data/vendor/mail/spec/mail/parsers/address_lists_parser_spec.rb +15 -0
- data/vendor/mail/spec/mail/parsers/content_transfer_encoding_parser_spec.rb +72 -0
- data/vendor/mail/spec/mail/part_spec.rb +129 -0
- data/vendor/mail/spec/mail/parts_list_spec.rb +12 -0
- data/vendor/mail/spec/mail/round_tripping_spec.rb +44 -0
- data/vendor/mail/spec/mail/utilities_spec.rb +327 -0
- data/vendor/mail/spec/mail/version_specific/escape_paren_1_8_spec.rb +32 -0
- data/vendor/mail/spec/matchers/break_down_to.rb +35 -0
- data/vendor/mail/spec/spec_helper.rb +163 -0
- 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
|