diff options
author | Damyan Ivanov <dmn@debian.org> | 2008-07-09 18:55:14 +0000 |
---|---|---|
committer | Damyan Ivanov <dmn@debian.org> | 2008-07-09 18:55:14 +0000 |
commit | f59098d3e39eaddd682298854eb227611aca32c0 (patch) | |
tree | f8bfc880b3f15bde1f55c9cf20d81a71c08ce3ee /t | |
parent | 222e39d87ecc2b671bda621595f5d3939ed25906 (diff) |
[svn-upgrade] Integrating new upstream version, mime-tools (5.427)
Diffstat (limited to 't')
-rw-r--r-- | t/EmptyPart.t | 38 | ||||
-rw-r--r-- | t/Filer.t | 32 | ||||
-rw-r--r-- | t/ParamVal.t | 30 | ||||
-rw-r--r-- | t/ticket-11901.t | 62 | ||||
-rw-r--r-- | t/ticket-37139.t | 94 |
5 files changed, 256 insertions, 0 deletions
diff --git a/t/EmptyPart.t b/t/EmptyPart.t new file mode 100644 index 0000000..2cd433e --- /dev/null +++ b/t/EmptyPart.t @@ -0,0 +1,38 @@ +#!/usr/bin/perl -w +use strict; +use warnings; +use Test::More tests => 6; + +use MIME::Tools; + +use lib "./t"; +use Globby; + +use MIME::Parser; + + +my $DIR = "./testout"; +((-d $DIR) && (-w $DIR)) or die "no output directory $DIR"; +unlink globby("$DIR/[a-z]*"); + +my $parser = MIME::Parser->new(); +$parser->output_dir($DIR); + +my $data = <<END; +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="foo" + +--foo +--foo +--foo +--foo-- +END + +my $entity = $parser->parse_data($data); +ok($entity, 'Got an entity'); +is($entity->mime_type, 'multipart/alternative'); +is($entity->parts, 3, 'Got three parts'); +is($entity->parts(0)->mime_type, 'text/plain'); +is($entity->parts(1)->mime_type, 'text/plain'); +is($entity->parts(2)->mime_type, 'text/plain'); + diff --git a/t/Filer.t b/t/Filer.t new file mode 100644 index 0000000..ef6a2fe --- /dev/null +++ b/t/Filer.t @@ -0,0 +1,32 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Test::More tests => 13; + +BEGIN { + use_ok('MIME::Parser::Filer'); +} + +# Tests for CPAN ticket 6789, and others +{ + my $filer = MIME::Parser::Filer->new(); + + # All of these filenames should be considered evil + my %evil = ( + ' ' => '.dat' , + ' leading_space' => 'leading_space.dat', + 'trailing_space ' => 'trailing_space.dat', + '.' => '..dat', + '..' => '...dat', + 'index[1].html' => '.html', + ); + + foreach my $name (keys %evil) { + ok( $filer->evil_filename( $name ), "$name is evil"); + } + + while( my ($evil, $clean) = each %evil ) { + is( $filer->exorcise_filename( $evil), $clean, "$evil was exorcised"); + } + +} diff --git a/t/ParamVal.t b/t/ParamVal.t new file mode 100644 index 0000000..d24df5a --- /dev/null +++ b/t/ParamVal.t @@ -0,0 +1,30 @@ +use strict; +use warnings; +use Test::More tests => 5; + +use MIME::Field::ContType; + +# Trivial test +{ + my $field = Mail::Field->new('Content-type'); + + isa_ok( $field, 'MIME::Field::ParamVal'); + isa_ok( $field, 'Mail::Field'); + + $field->param('_', 'stuff'); + $field->param('answer', 42); + + is( $field->stringify, 'stuff; answer="42"', 'Object stringified to expected value'); +} + +# Test for CPAN RT #34451 +{ + my $header = 'stuff; answer*=%FE%20%FF'; + + my $field = Mail::Field->new('Content-type'); + $field->parse( $header ); + is( $field->param('_'), 'stuff', 'Got body of header'); + + my $expected = pack('C', 0xfe) . ' ' . pack('C', 0xff); + is( $field->param('answer'), $expected, 'answer param was unpacked correctly'); +} diff --git a/t/ticket-11901.t b/t/ticket-11901.t new file mode 100644 index 0000000..3cb2c5d --- /dev/null +++ b/t/ticket-11901.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl +use Test::More tests => 2; +use MIME::Parser; + +# Ticket 11901 - malformed multipart/mixed caused remove_sig() to die. + +my $entity = MIME::Parser->new->parse(\*DATA); +isa_ok( $entity, 'MIME::Entity'); +is($entity->remove_sig(), undef, "Can't remove sig from broken message"); + +__DATA__ +Return-Path: <atoby@email.msn.com> +X-Original-To: info2001@lists.sch.bme.hu +Delivered-To: info2001@lists.sch.bme.hu +Received: by lists.sch.bme.hu (Postfix, from userid 102) + id 1CDBB11E21; Mon, 14 Mar 2005 22:41:52 +0100 (CET) +Received: from lists.sch.bme.hu ([127.0.0.1]) + by localhost (kaa.sch.bme.hu [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id 25096-10 for <info2001@lists.sch.bme.hu>; + Mon, 14 Mar 2005 22:41:50 +0100 (CET) +Received: from balu.sch.bme.hu (balu.sch.bme.hu [152.66.208.40]) + by lists.sch.bme.hu (Postfix) with ESMTP id 8D03D11E21 + for <info2001@lists.sch.bme.hu>; Mon, 14 Mar 2005 22:41:50 +0100 (CET) +Received: from 69.183.13.242.adsl.snet.net ([69.183.13.242]) + by balu.sch.bme.hu (Sun ONE Messaging Server 6.0 Patch 1 (built Jan 28 2004)) + with SMTP id <0IDD00LL92XIUK80@balu.sch.bme.hu> for info2001@lists.sch.bme.hu + (ORCPT info2001@sch.bme.hu); Mon, 14 Mar 2005 22:41:50 +0100 (CET) +Received: from 99.94.255.218 by 69.183.13.242.adsl.snet.net Mon, + 14 Mar 2005 08:30:34 -0800 +Date: Mon, 14 Mar 2005 11:19:01 -0800 +From: Justine Cornett <atoby@email.msn.com> +To: info2001@sch.bme.hu +Message-id: <426080426772888074962@email.msn.com> +MIME-version: 1.0 +X-Mailer: diana 65.261.2493443 +Content-type: multipart/mixed; boundary="Boundary_(ID_tz+jdqVflLNHHe1DVt0NoA)" +X-Priority: 3 +X-IP: 139.190.7.62 +Spam-test: True ; 7.0 / 5.0 ; + ALL_TRUSTED,BAYES_99,BIZ_TLD,HTML_30_40,HTML_FONT_TINY,HTML_MESSAGE,LONGWORDS,PLING_QUERY,RCVD_BY_IP,RCVD_DOUBLE_IP_LOOSE,URIBL_SBL,URIBL_WS_SURBL +X-Virus-Scanned: by amavisd-new at kaa.sch.bme.hu +Subject: [info2001] Have you heard of Rolex Timepieces ? Come on in ! [propel] +Reply-To: info2001@sch.bme.hu +X-Loop: info2001@sch.bme.hu +X-Sequence: 19626 +Errors-to: info2001-owner@sch.bme.hu +Precedence: list +X-no-archive: yes +List-Id: <info2001.sch.bme.hu> +List-Id: <info2001@sch.bme.hu> +List-Help: <mailto:sympa@sch.bme.hu?subject=help> +List-Subscribe: <mailto:sympa@sch.bme.hu?subject=subscribe%20info2001> +List-Unsubscribe: <mailto:sympa@sch.bme.hu?subject=unsubscribe%20info2001> +List-Post: <mailto:info2001@sch.bme.hu> +List-Owner: <mailto:info2001-request@sch.bme.hu> +List-Archive: <https://lists.sch.bme.hu/wws/arc/info2001> + +ë÷M7ß½¼ß]º +íz{SÊ{Ù¥r«±ëºÆ¬r(¢{^Ôëj{z±'rbØmVèw#Ú('qéµêÅ8ÔÜ¢Z+}ýÓM
©äÊ¢¼¨º¸§µê޲اEêeÆj×!zÏÅ8Ôÿ=دjX Ç׫Þ~¶ÿ²ñÛ$~öGáwèý+ê.³raz·¿v+ÏjX Ç׫ãSrh÷ÓM4!ü¨ºÇj|)à¶(!¶)íz·¬·*.¢¸Ê¡j÷*®zËb¢{)æ¬yÚ'¶¬ÖzÚ/È¢êðy»"µæüÿÅ8ÔÏjX Ç׫Þ~¶ÿ¥×¯më-¡ûay¸³üÌ8åæ'Ã1·*ç©'Á«\
ëk6«üÏn¶ën»)j{-ÊWãSHDßmãS-+©\©ÞºÞ¦Vy¦åzw'å¢Ú§^ºË^¶§'!¢V¬¦-ÁªÛ®ÚânëZ¯(X®«¹Ú(®Ièm¶¥Í§/j«ÊÞ¸«v§+kjé¶ë$
æ¥v+-Y^¯&ëªëzÛl{¨ºÆ«n޶馢ʮy©eºÈ¯zÊ(¶Ú§·'^zÚîØ^²Ê%¢fèzº·¬ªçç¡ÊjV¬ªh+^rârÜ"µÈr©º»nëmz·ÚµºïjW§¶)ÞjZlmx!jfëþÊZöèw/á¶ië}ÓM÷ïo7×n¢{^Ôò¥ë^Æß騧r«±ëºÆ¬r(¢{^Ôëj{z±'rbÛÔhìb³Z´Ü¨ºÚ0yªü÷®zÓ5îm§ÿîÊ8ò½ÉÛª'lÆâÏú²Æ8úõõ§ª¢jª8¥ë÷M7ß½¼ß]º + +--Boundary_(ID_tz+jdqVflLNHHe1DVt0NoA)-- + diff --git a/t/ticket-37139.t b/t/ticket-37139.t new file mode 100644 index 0000000..aa660fd --- /dev/null +++ b/t/ticket-37139.t @@ -0,0 +1,94 @@ +use strict; +use warnings; +use Test::More tests => 2; + +# Bug discovered by RJBS (rt.cpan.org, ticket 37139) +# +# Sometimes, when collapsing a message into single part, the +# Content-type is horked up. +# +# It starts as: +# +# Content-Type: multipart/related; boundary=xyzzy; type=foo +# +# ...and ends as: +# +# Content-Type: text/plain; boundary=xyzzy; type=foo +# + +use MIME::Parser; + +my $entity = MIME::Parser->new->parse(\*DATA); + +sub cleanup_mime { + # Forcibly trash ->parts() to reproduce bug + my ($entity) = @_; + foreach my $part ($entity->parts) { + cleanup_mime($part); + $entity->parts([]); + } +} + +#diag( $entity->as_string); +cleanup_mime($entity); +#diag( $entity->as_string); + +is($entity->make_singlepart, 'DONE', 'make_singlepart() succeeded'); + +is($entity->head->get('Content-type'), "text/plain\n"); +#diag( $entity->as_string); + +__DATA__ +Received: from indigo.pobox.com (indigo.pobox.com [207.106.133.17]) + by chiclet.listbox.com (Postfix) with ESMTP id 2AE91214A41 + for <devnull@pobox.com>; Tue, 24 Jun 2008 01:22:44 -0400 (EDT) +Received: from vip-2fed93075f2 (unknown [116.60.133.101]) + by indigo.pobox.com (Postfix) with SMTP id 4DE1A6BF4D; + Tue, 24 Jun 2008 01:22:30 -0400 (EDT) +From: "ÕÅÏÈÉú"<ÕÅÏÈÉú> +Reply-To: "h7w4v4c1@umail.hinet.net"<h7w4v4c1@umail.hinet.net> +To: "devnull@pobox.com"<devnull@pobox.com> +Subject: =?gb2312?B?uePW3crQwaq3or34s/a/2sOz0tfT0M/euavLvg==?= +Date: Tue, 24 Jun 08 13:22:18 +0800 +MIME-Version: 1.0 +Content-type: multipart/related; + type="multipart/alternative"; + boundary="----=_NextPart_000_0015_1963AAAC.4C2B0004" +X-Priority: 3 +X-MSMail-Priority: Normal +X-Mailer: Microsoft Outlook Express 6.00.2800.1158 +X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 +Message-Id: <20080624052230.4DE1A6BF4D@indigo.pobox.com> + + +This is a multi-part message in MIME format. + +------=_NextPart_000_0015_1963AAAC.4C2B0004 +Content-Type: multipart/alternative; + boundary="----=_NextPart_001_0016_1963AAAC.4C2B0004" + + +------=_NextPart_001_0016_1963AAAC.4C2B0004 +Content-Type: text/html; charset=gb2312 +Content-Transfer-Encoding: base64 + +PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VO +Ij4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD1odHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29t +L2ludGVsbGlzZW5zZS9pZTUgDQpuYW1lPXZzX3RhcmdldFNjaGVtYT4NCjxNRVRBIGh0dHAtZXF1aXY9 +Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1nYjIzMTIiPg0KPE1FVEEgY29u +dGVudD0iTVNIVE1MIDYuMDAuMjkwMC4zMzU0IiBuYW1lPUdFTkVSQVRPUj48L0hFQUQ+DQo8Qk9EWSBz +dHlsZT0iRk9OVC1TSVpFOiA5cHQ7IEZPTlQtRkFNSUxZOiDLzszlIj4NCjxQPsT6usMhPEJSPiZuYnNw +OyZuYnNwOyCxvrmry77XqMPFzqq498Oz0tfJzLvyyfqy+rOnvNK0+sDtu/XO7734s/a/2rGoudihoiAN +CsnMvOyhorWl1qShosjrstahorGoudjK1tD4oaLNz7O1oaLW0LjbLLT6sOy499bWsvq12NakyukuwarP +tcjLo7rVxc/Iyfogyta7+jEzNjMyMjc4MzMyJm5ic3A7IFRFTDAyMC0zNzIzMjYwNiANCjYxMDMwOTY0 +IEZBWDAyMC02MTAzMDUxNSC12Na3o7q549bdytDM7LrTx/jR4MHrwrcxMjC6xb3w0eC088/DIMjn09C0 +8sjFx+u8+8HCITxCUj48L1A+PC9CT0RZPjwvSFRNTD4NCg== + + +------=_NextPart_001_0016_1963AAAC.4C2B0004-- + + + +------=_NextPart_000_0015_1963AAAC.4C2B0004-- + + |