From 4cd087ea2eb8d1dbc8a063b41cffcd5df35d7df6 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sun, 13 Sep 2015 08:50:16 -0400
Subject: [PATCH] Fixed mailvelope-generated messages structure (required Mail_Mime-1.10.0)
---
tests/Framework/Mime.php | 67 +++++++++++++++++++++++++++++++++
1 files changed, 67 insertions(+), 0 deletions(-)
diff --git a/tests/Framework/Mime.php b/tests/Framework/Mime.php
index 3035ba0..f3f0d0b 100644
--- a/tests/Framework/Mime.php
+++ b/tests/Framework/Mime.php
@@ -39,6 +39,13 @@
19 => 'Test <"test test"@domain.tld>',
20 => '<"test test"@domain.tld>',
21 => '"test test"@domain.tld',
+ // invalid (#1489092)
+ 22 => '"John Doe @ SomeBusinessName" <MAILER-DAEMON>',
+ 23 => '=?UTF-8?B?IlRlc3QsVGVzdCI=?= <test@domain.tld>',
+ // invalid, but we do our best to parse correctly
+ 24 => '"email@test.com" <>',
+ // valid with redundant quoting (#1490040)
+ 25 => '"user"@"domain.tld"',
);
$results = array(
@@ -64,6 +71,11 @@
19 => array(1, 'Test', '"test test"@domain.tld'),
20 => array(1, '', '"test test"@domain.tld'),
21 => array(1, '', '"test test"@domain.tld'),
+ // invalid (#1489092)
+ 22 => array(1, 'John Doe @ SomeBusinessName', 'MAILER-DAEMON'),
+ 23 => array(1, 'Test,Test', 'test@domain.tld'),
+ 24 => array(1, '', 'email@test.com'),
+ 25 => array(1, '', 'user@domain.tld'),
);
foreach ($headers as $idx => $header) {
@@ -144,6 +156,21 @@
}
/**
+ * Test format=flowed unfolding (#1490284)
+ */
+ function test_unfold_flowed2()
+ {
+ $flowed = "> culpa qui officia deserunt mollit anim id est laborum.\r\n"
+ ."> \r\n"
+ ."Sed ut perspiciatis unde omnis iste natus error \r\nsit voluptatem";
+ $unfolded = "> culpa qui officia deserunt mollit anim id est laborum.\r\n"
+ ."> \r\n"
+ ."Sed ut perspiciatis unde omnis iste natus error sit voluptatem";
+
+ $this->assertEquals($unfolded, rcube_mime::unfold_flowed($flowed), "Test correct unfolding of quoted lines [2]");
+ }
+
+ /**
* Test wordwrap()
*/
function test_wordwrap()
@@ -189,6 +216,14 @@
array("-------\nabc def", 5),
"-------\nabc\ndef",
),
+ array(
+ array("http://xx.xxx.xx.xxx:8080/addressbooks/roundcubexxxxx%40xxxxxxxxxxxxxxxxxxxxxxx.xx.xx/testing/", 70),
+ "http://xx.xxx.xx.xxx:8080/addressbooks/roundcubexxxxx%40xxxxxxxxxxxxxxxxxxxxxxx.xx.xx/testing/",
+ ),
+ array(
+ array("this-is-just-some-blabla-to-make-this-more-than-seventy-five-characters-in-a-row -- this line should be wrapped", 20, "\n"),
+ "this-is-just-some-blabla-to-make-this-more-than-seventy-five-characters-in-a-row\n-- this line should\nbe wrapped",
+ ),
);
foreach ($samples as $sample) {
@@ -196,4 +231,36 @@
}
}
+ /**
+ * Test parse_message()
+ */
+ function test_parse_message()
+ {
+ $file = file_get_contents(__DIR__ . '/../src/html.msg');
+ $result = rcube_mime::parse_message($file);
+
+ $this->assertInstanceOf('rcube_message_part', $result);
+ $this->assertSame('multipart/alternative', $result->mimetype);
+ $this->assertSame('1.0', $result->headers['mime-version']);
+ $this->assertSame('=_68eeaf4ab95b5312965e45c33362338e', $result->ctype_parameters['boundary']);
+ $this->assertSame('1', $result->parts[0]->mime_id);
+ $this->assertSame(12, $result->parts[0]->size);
+ $this->assertSame('text/plain', $result->parts[0]->mimetype);
+ $this->assertSame("this is test", $result->parts[0]->body);
+ $this->assertSame('2', $result->parts[1]->mime_id);
+ $this->assertSame(0, $result->parts[1]->size);
+ $this->assertSame('multipart/related', $result->parts[1]->mimetype);
+ $this->assertCount(2, $result->parts[1]->parts);
+ $this->assertSame('2.1', $result->parts[1]->parts[0]->mime_id);
+ $this->assertSame(257, $result->parts[1]->parts[0]->size);
+ $this->assertSame('text/html', $result->parts[1]->parts[0]->mimetype);
+ $this->assertSame('UTF-8', $result->parts[1]->parts[0]->charset);
+ $this->assertRegExp('/<html>/', $result->parts[1]->parts[0]->body);
+ $this->assertSame('2.2', $result->parts[1]->parts[1]->mime_id);
+ $this->assertSame(793, $result->parts[1]->parts[1]->size);
+ $this->assertSame('image/jpeg', $result->parts[1]->parts[1]->mimetype);
+ $this->assertSame('base64', $result->parts[1]->parts[1]->encoding);
+ $this->assertSame('inline', $result->parts[1]->parts[1]->disposition);
+ $this->assertSame('photo-mini.jpg', $result->parts[1]->parts[1]->filename);
+ }
}
--
Gitblit v1.9.1