diff options
author | Joel Uckelman <uckelman@nomic.net> | 2012-02-27 05:54:36 +0100 |
---|---|---|
committer | Joel Uckelman <uckelman@nomic.net> | 2012-02-27 05:54:36 +0100 |
commit | e66b736aa6c2e00643b9b061d7064c7991503390 (patch) | |
tree | f30b9e8b135b4785bc1b149046918668a9e67d03 /test | |
parent | 809671070efe8ff29c633e9be03d0d41a5cf6560 (diff) |
Remove Edit marker from incoming mail, add it to outgoing mail.
Diffstat (limited to 'test')
-rw-r--r-- | test/build_emailTest.php | 178 | ||||
-rw-r--r-- | test/build_postTest.php | 43 |
2 files changed, 221 insertions, 0 deletions
diff --git a/test/build_emailTest.php b/test/build_emailTest.php new file mode 100644 index 0000000..5730873 --- /dev/null +++ b/test/build_emailTest.php @@ -0,0 +1,178 @@ +<?php + +require_once(__DIR__ . '/../src/build_email.php'); + +class build_email_test extends PHPUnit_Framework_TestCase { + /** @dataProvider build_email_text_data */ + public function test_build_email_text($text, $edit, $expected) { + $this->assertEquals($expected, build_email_text($text, $edit)); + } + + public function build_email_text_data() { + return array( + array('foo bar', false, 'foo bar'), + array('foo bar', true, "[This message has been edited.] + +foo bar") + ); + } + + public function test_build_email_footer() { + $this->assertEquals( + " +_______________________________________________ +Read this topic online here: +http://www.example.com/viewtopic.php?p=42#p42", + build_email_footer(42, 'http://www.example.com') + ); + } + + /** @dataProvider build_email_from_data */ + public function test_build_email_from($name, $email, $expected) { + $this->assertEquals($expected, build_email_from($name, $email)); + } + + public function build_email_from_data() { + return array( + array('Heizölrückstoßabdämpfung', 'foo@example.com', '=?UTF-8?B?SGVpesO2bHLDvGNrc3Rvw59hYmTDpG1wZnVuZw==?= <foo@example.com>'), + array('Joel Uckelman', 'uckelman@nomic.net', 'Joel Uckelman <uckelman@nomic.net>'), + array('L.Tankersley', 'leland53@comcast.net', '"L.Tankersley" <leland53@comcast.net>') + ); + } + + /** @dataProvider build_email_subject_data */ + public function test_build_email_subject($ftag, $subject, $reply, $edit, $expected) { + $this->assertEquals( + $expected, + build_email_subject($ftag, $subject, $reply, $edit) + ); + } + + public function build_email_subject_data() { + return array( + array('[f]', '', false, false, '[f] (no subject)'), + array('[f]', '', true, false, 'Re: [f] (no subject)'), + array('[f]', 'Subject', false, false, '[f] Subject'), + array('[f]', 'Subject', true, false, 'Re: [f] Subject'), + array('[f]', '', false, true, 'Edit: [f] (no subject)'), + array('[f]', '', true, true, 'Edit: Re: [f] (no subject)'), + array('[f]', 'Subject', false, true, 'Edit: [f] Subject'), + array('[f]', 'Subject', true, true, 'Edit: Re: [f] Subject') + ); + } + + protected $default_headers = array( + 'To' => 'messages@vassalengine.org', + 'From' => 'Joel Uckelman <uckelman@nomic.net>', + 'Sender' => 'forum-bridge@vassalengine.org', + 'Subject' => 'Test message', + 'Date' => 'Sun, 31 Oct 2010 08:46:00 -0700', + 'Message-ID' => '<20100302094228.33F0310091@charybdis.ellipsis.cx>', + 'X-BeenThere' => 'http://www.example.com', + 'In-Reply-To' => '<1267473003.m2f.17543@www.vassalengine.org>', + 'References' => '<1267171317.m2f.17507@www.vassalengine.org> <1267473003.m2f.17543@www.vassalengine.org>' + ); + + protected $default_headers_params = array( + 'Joel Uckelman', + 'uckelman@nomic.net', + 'messages@vassalengine.org', + 'forum-bridge@vassalengine.org', + 'Test message', + 1288539960, + '<20100302094228.33F0310091@charybdis.ellipsis.cx>', + 'http://www.example.com', + '<1267473003.m2f.17543@www.vassalengine.org>', + '<1267171317.m2f.17507@www.vassalengine.org> <1267473003.m2f.17543@www.vassalengine.org>' + ); + + protected function call_build_email_headers(array $headers, array $params) { + date_default_timezone_set('America/Phoenix'); + $this->assertEquals( + $headers, + build_email_headers( + $params[0], + $params[1], + $params[2], + $params[3], + $params[4], + $params[5], + $params[6], + $params[7], + $params[8], + $params[9] + ) + ); + } + + public function test_build_email_headers() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + $this->call_build_email_headers($headers, $headers_params); + } + + public function test_build_email_headers_no_in_reply_to() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + + unset($headers['In-Reply-To']); + $headers_params[8] = null; + + $this->call_build_email_headers($headers, $headers_params); + } + + public function test_build_email_headers_no_references() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + + unset($headers['References']); + $headers_params[9] = null; + + $this->call_build_email_headers($headers, $headers_params); + } + + public function test_build_email_headers_utf8_subject() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + + $headers['Subject'] = '=?UTF-8?B?SGVpesO2bHLDvGNrc3Rvw59hYmTDpG1wZnVuZw==?='; + $headers_params[4] = 'Heizölrückstoßabdämpfung'; + + $this->call_build_email_headers($headers, $headers_params); + } + + public function test_build_email_headers_utf8_username() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + + $headers['From'] = '=?UTF-8?B?SGVpesO2bHLDvGNrc3Rvw59hYmTDpG1wZnVuZw==?= <uckelman@nomic.net>'; + $headers_params[0] = 'Heizölrückstoßabdämpfung'; + + $this->call_build_email_headers($headers, $headers_params); + } + + public function test_build_email_body_no_attachments() { + $headers = array(); + $text = 'This is some test text.'; + $footer = " +_______________________________________________ +Read this topic online here: +http://www.example.com/viewtopic.php?p=42#p42"; + $attachments = null; + + $body = build_email_body($headers, $text, $attachments, $footer); + + + $this->assertEquals('text/plain; charset=UTF-8; format=flowed', $headers['Content-Type']); + $this->assertEquals('8bit', $headers['Content-Transfer-Encoding']); + $this->assertEquals("$text\n$footer", $body); + } + + public function test_build_email_body_attachments() { + // FIXME: This is kind of a complex test to write, because the result + // is a Mail_mimePart object. + $this->markTestIncomplete(); + } +} + +?> diff --git a/test/build_postTest.php b/test/build_postTest.php new file mode 100644 index 0000000..be542dd --- /dev/null +++ b/test/build_postTest.php @@ -0,0 +1,43 @@ +<?php + +require_once(__DIR__ . '/../src/build_post.php'); + +class build_post_test extends PHPUnit_Framework_TestCase { + + /** @dataProvider build_post_subject_data */ + public function test_build_post_subject($ltag, $ftag, $subject, $expected) { + $this->assertEquals( + $expected, + build_post_subject($ltag, $ftag, $subject) + ); + } + + public function build_post_subject_data() { + return array( + array('[l]', '[f]', '', '(no subject)'), + array('[l]', '[f]', 'Re:', '(no subject)'), + array('[l]', '[f]', 'Subject', 'Subject'), + array('[l]', '[f]', 'Re: Subject', 'Subject'), + array('[l]', '[f]', 'Re: Re: Re: Subject', 'Subject'), + array('[l]', '[f]', '[f] Subject', 'Subject'), + array('[l]', '[f]', '[f] [f] Subject', 'Subject'), + array('[l]', '[f]', '[f] [f] Subject [f]', 'Subject'), + array('[l]', '[f]', '[l] [f] Re: Subject', 'Subject'), + array('[l]', '[f]', 'Re: [l] [f] Subject', 'Subject'), + array('[l]', '[f]', 'Re: Subject [l][f] Subject', 'Subject Subject'), + array('[l]', '[f]', 'Edit:', '(no subject)'), + array('[l]', '[f]', 'Edit: Re:', '(no subject)'), + array('[l]', '[f]', 'Edit: Subject', 'Subject'), + array('[l]', '[f]', 'Edit: Re: Subject', 'Subject'), + array('[l]', '[f]', 'Edit: Re: Re: Re: Subject', 'Subject'), + array('[l]', '[f]', 'Edit: [f] Subject', 'Subject'), + array('[l]', '[f]', 'Edit: [f] [f] Subject', 'Subject'), + array('[l]', '[f]', 'Edit: [f] [f] Subject [f]', 'Subject'), + array('[l]', '[f]', '[l] [f] Edit: Re: Subject', 'Subject'), + array('[l]', '[f]', 'Edit: Re: [l] [f] Subject', 'Subject'), + array('[l]', '[f]', 'Edit: Re: Subject [l][f] Subject', 'Subject Subject') + ); + } +} + +?> |