diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/UtilTest.php | 48 | ||||
-rw-r--r-- | test/build_email_test.php | 150 |
2 files changed, 198 insertions, 0 deletions
diff --git a/test/UtilTest.php b/test/UtilTest.php new file mode 100644 index 0000000..7135b9f --- /dev/null +++ b/test/UtilTest.php @@ -0,0 +1,48 @@ +<?php + +require_once('PHPUnit/Framework.php'); + +require_once(__DIR__ . '/../src/Util.php'); + +class UtilTest extends PHPUnit_Framework_TestCase { + public function is_ascii_provider() { + return array( + array('', true), + array('foo', true), + array('Heizölrückstoßabdämpfung', false) + ); + } + + /** @dataProvider is_ascii_provider */ + public function test_is_ascii($string, $expected) { + $this->assertEquals($expected, is_ascii($string)); + } + + public function utf8_quote_provider() { + return array( + array('', '=?UTF-8?B??='), + array('foo', '=?UTF-8?B?Zm9v?='), + array('Heizölrückstoßabdämpfung', '=?UTF-8?B?SGVpesO2bHLDvGNrc3Rvw59hYmTDpG1wZnVuZw==?=') + ); + } + + /** @dataProvider utf8_quote_provider */ + public function test_utf8_quote($string, $expected) { + $this->assertEquals($expected, utf8_quote($string)); + } + + public function utf8_quote_non_ascii_provider() { + return array( + array('', ''), + array('foo', 'foo'), + array('Heizölrückstoßabdämpfung', '=?UTF-8?B?SGVpesO2bHLDvGNrc3Rvw59hYmTDpG1wZnVuZw==?=') + ); + } + + /** @dataProvider utf8_quote_non_ascii_provider */ + public function test_utf8_quote_non_ascii($string, $expected) { + $this->assertEquals($expected, utf8_quote_non_ascii($string)); + } +} + +?> diff --git a/test/build_email_test.php b/test/build_email_test.php new file mode 100644 index 0000000..c78ab7b --- /dev/null +++ b/test/build_email_test.php @@ -0,0 +1,150 @@ +<?php + +require_once('PHPUnit/Framework.php'); + +require_once(__DIR__ . '/../src/build_email.php'); + +class build_email_test extends PHPUnit_Framework_TestCase { + + public function test_build_text_edit() { + $this->assertEquals( + "[This message has been edited.] + +foo bar", + build_text('foo bar', true) + ); + } + + public function test_build_text_no_edit() { + $this->assertEquals( + 'foo bar', + build_text('foo bar', false) + ); + } + + public function test_build_footer() { + $this->assertEquals( + " +_______________________________________________ +Read this topic online here: +http://www.example.com/viewtopic.php?p=42#p42", + build_footer(42, 'http://www.example.com') + ); + } + + 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', + false, + 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_headers(array $headers, array $params) { + $this->assertEquals( + $headers, + build_headers( + $params[0], + $params[1], + $params[2], + $params[3], + $params[4], + $params[5], + $params[6], + $params[7], + $params[8], + $params[9], + $params[10] + ) + ); + } + + public function test_build_headers() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + $this->call_build_headers($headers, $headers_params); + } + + public function test_build_headers_no_in_reply_to() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + + unset($headers['In-Reply-To']); + $headers_params[9] = null; + + $this->call_build_headers($headers, $headers_params); + } + + public function test_build_headers_no_references() { + $headers = $this->default_headers; + $headers_params = $this->default_headers_params; + + unset($headers['References']); + $headers_params[10] = null; + + $this->call_build_headers($headers, $headers_params); + } + + public function test_build_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_headers($headers, $headers_params); + } + + public function test_build_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_headers($headers, $headers_params); + } + + public function test_build_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_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_body_attachments() { + // FIXME: This is kind of a complex test to write, because the result + // is a Mail_mimePart object. + $this->markTestIncomplete(); + } +} + +?> |