From e66b736aa6c2e00643b9b061d7064c7991503390 Mon Sep 17 00:00:00 2001 From: Joel Uckelman Date: Mon, 27 Feb 2012 05:54:36 +0100 Subject: Remove Edit marker from incoming mail, add it to outgoing mail. --- test/build_emailTest.php | 178 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 test/build_emailTest.php (limited to 'test/build_emailTest.php') 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 @@ +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==?= '), + array('Joel Uckelman', 'uckelman@nomic.net', 'Joel Uckelman '), + array('L.Tankersley', 'leland53@comcast.net', '"L.Tankersley" ') + ); + } + + /** @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 ', + '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==?= '; + $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(); + } +} + +?> -- cgit v1.2.3