summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorDamyan Ivanov <dmn@debian.org>2008-07-09 18:55:14 +0000
committerDamyan Ivanov <dmn@debian.org>2008-07-09 18:55:14 +0000
commitf59098d3e39eaddd682298854eb227611aca32c0 (patch)
treef8bfc880b3f15bde1f55c9cf20d81a71c08ce3ee /t
parent222e39d87ecc2b671bda621595f5d3939ed25906 (diff)
[svn-upgrade] Integrating new upstream version, mime-tools (5.427)
Diffstat (limited to 't')
-rw-r--r--t/EmptyPart.t38
-rw-r--r--t/Filer.t32
-rw-r--r--t/ParamVal.t30
-rw-r--r--t/ticket-11901.t62
-rw-r--r--t/ticket-37139.t94
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±'r‡bžŠØmšVèw#ږ('qéµêÅ8ÔÜ¢Z+}ýÓM…©äʋŸ¢¼¨º¸§µê޲اEêe‰Æ–j×!zÏÅ8Ôÿ=دjX Çž×«Þ~¶Ÿÿ²ˆñ’Û$~ö–GáŠwèý+ê.³­raz·¿v+ÏjX Çž×«ãSr‰h­÷ÓM4!ü¨ºÇžj|­†)තš(!¶)íz·¬·*.¢¸ŸÊ‹¡j÷šŸ*®zËb¢{)•æ¬yÚ'¶¬ŠÖ­zÚ/ŠÈ­¢êðy»"µæ­üÿÅ8ÔÏjX Çž×«Þ~¶Ÿÿ¥×¯më-¡ûay¸³ü̎8åæ'È1·*獩–'Á«\…ëk6«üÏn¶ën»)j{-ÊWãSH†DߚmãS-€+‰©\­©ÞŠºÞ¦Vœy¦åzšw'墊ڙ§^ºË^†¶§ž'!¢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§¶)ÞjZlž‹mŠx!jfëþÊZŸöèw/á¶ië}ÓM÷ïo7×n‚¢{^žÔò¥ë^Æß镨§r«±ëºÆ¬r(‚¢{^žÔëj{z±'r‡bžۊÔ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--
+
+