diff --git a/tests/Zend/Log/Writer/AllTests.php b/tests/Zend/Log/Writer/AllTests.php index 4d50a3436e..d10a67ac81 100644 --- a/tests/Zend/Log/Writer/AllTests.php +++ b/tests/Zend/Log/Writer/AllTests.php @@ -26,7 +26,6 @@ require_once 'Zend/Log/Writer/AbstractTest.php'; require_once 'Zend/Log/Writer/DbTest.php'; -require_once 'Zend/Log/Writer/MailTest.php'; require_once 'Zend/Log/Writer/MockTest.php'; require_once 'Zend/Log/Writer/NullTest.php'; require_once 'Zend/Log/Writer/StreamTest.php'; diff --git a/tests/Zend/Log/Writer/MailTest.php b/tests/Zend/Log/Writer/MailTest.php deleted file mode 100644 index d288cc3c7f..0000000000 --- a/tests/Zend/Log/Writer/MailTest.php +++ /dev/null @@ -1,522 +0,0 @@ -_transport = $this->getMockForAbstractClass( - 'Zend_Mail_Transport_Abstract', - array() - ); - Zend_Mail::setDefaultTransport($this->_transport); - } - - protected function tearDown() - { - Zend_Mail::clearDefaultTransport(); - } - - /** - * Tests normal logging, but with multiple messages for a level. - * - * @return void - */ - public function testNormalLoggingMultiplePerLevel() - { - list(, , $log) = $this->_getSimpleLogger(); - $log->info('an info message'); - $log->info('a second info message'); - } - - /** - * Tests normal logging without use of Zend_Layout. - * - * @return void - */ - public function testNormalLoggingNoLayout() - { - list(, , $log) = $this->_getSimpleLogger(); - $log->info('an info message'); - $log->warn('a warning message'); - } - - /** - * Tests normal logging with Zend_Layout usage. - * - * @return void - */ - public function testNormalLoggingWithLayout() - { - list(, , $log) = $this->_getSimpleLogger(true); - $log->info('an info message'); - $log->warn('a warning message'); - } - - /** - * Tests normal logging with Zend_Layout and a custom formatter for it. - * - * @return void - */ - public function testNormalLoggingWithLayoutAndItsFormatter() - { - list(, $writer, $log) = $this->_getSimpleLogger(true); - - // Since I'm using Zend_Layout, I should be able to set a formatter - // for it. - $writer->setLayoutFormatter(new Zend_Log_Formatter_Simple()); - - // Log some messages to cover those cases. - $log->info('an info message'); - $log->warn('a warning message'); - } - - /** - * Tests normal logging with use of Zend_Layout, a custom formatter, and - * subject prepend text. - * - * @return void - */ - public function testNormalLoggingWithLayoutFormatterAndSubjectPrependText() - { - list(, $writer, $log) = $this->_getSimpleLogger(true); - $writer->setLayoutFormatter(new Zend_Log_Formatter_Simple()); - $return = $writer->setSubjectPrependText('foo'); - - $this->assertSame($writer, $return); - - // Log some messages to cover those cases. - $log->info('an info message'); - $log->warn('a warning message'); - } - - /** - * Tests setting of subject prepend text. - * - * @return void - */ - public function testSetSubjectPrependTextNormal() - { - list($mail, $writer, $log) = $this->_getSimpleLogger(); - - $return = $writer->setSubjectPrependText('foo'); - - // Ensure that fluent interface is present. - $this->assertSame($writer, $return); - } - - /** - * Tests that the subject prepend text can't be set if the Zend_Mail - * object already has a subject line set. - * - * @return void - */ - public function testSetSubjectPrependTextPreExisting() - { - list($mail, $writer, $log) = $this->_getSimpleLogger(); - - // Expect a Zend_Log_Exception because the subject prepend text cannot - // be set of the Zend_Mail object already has a subject line set. - $this->setExpectedException('Zend_Log_Exception'); - - // Set a subject line so the setSubjectPrependText() call triggers an - // exception. - $mail->setSubject('a pre-existing subject line'); - - $writer->setSubjectPrependText('foo'); - } - - /** - * Tests basic fluent interface for setting layout formatter. - * - * @return void - */ - public function testSetLayoutFormatter() - { - list(, $writer) = $this->_getSimpleLogger(true); - $return = $writer->setLayoutFormatter(new Zend_Log_Formatter_Simple()); - $this->assertSame($writer, $return); - } - - /** - * Tests that the layout formatter can be set and retrieved. - * - * @return void - */ - public function testGetLayoutFormatter() - { - list(, $writer) = $this->_getSimpleLogger(true); - $formatter = new Zend_Log_Formatter_Simple(); - - // Ensure that fluent interface is present. - $returnedWriter = $writer->setLayoutFormatter($formatter); - $this->assertSame($writer, $returnedWriter); - - // Ensure that the getter returns the same formatter. - $returnedFormatter = $writer->getLayoutFormatter(); - $this->assertSame($formatter, $returnedFormatter); - } - - /** - * Tests setting of the layout formatter when Zend_Layout is not being - * used. - * - * @return void - */ - public function testSetLayoutFormatterWithoutLayout() - { - list(, $writer) = $this->_getSimpleLogger(); - - // If Zend_Layout is not being used, a formatter cannot be set for it. - $this->setExpectedException('Zend_Log_Exception'); - $writer->setLayoutFormatter(new Zend_Log_Formatter_Simple()); - } - - /** - * Tests destruction of the Zend_Log instance when an error message entry - * is in place, but the mail can't be sent. Should result in a warning, - * which we test for here. - * - * @return void - */ - public function testDestructorMailError() - { - list($mail, $writer, $log) = $this->_getSimpleLogger(false); - - // Force the send() method to throw the same exception that would be - // thrown if, say, the SMTP server couldn't be contacted. - $mail->expects($this->any()) - ->method('send') - ->will($this->throwException(new Zend_Mail_Transport_Exception())); - - // Log an error message so that there's something to send via email. - $log->err('a bogus error message to force mail sending'); - - $this->setExpectedException('PHPUnit_Framework_Error'); - unset($log); - } - - /** - * Tests destruction of the Zend_Log instance when an error message entry - * is in place, but the layout can't be rendered. Should result in a - * notice, which we test for here. - * - * @return void - */ - public function testDestructorLayoutError() - { - list($mail, $writer, $log, $layout) = $this->_getSimpleLogger(true); - - // Force the render() method to throw the same exception that would - // be thrown if, say, the layout template file couldn't be found. - $layout->expects($this->any()) - ->method('render') - ->will($this->throwException(new Zend_View_Exception('bogus message'))); - - // Log an error message so that there's something to send via email. - $log->err('a bogus error message to force mail sending'); - - $this->setExpectedException('PHPUnit_Framework_Error'); - unset($log); - } - - /** - * @group ZF-8953 - */ - public function testFluentInterface() - { - require_once 'Zend/Log/Formatter/Simple.php'; - list(, $writer) = $this->_getSimpleLogger(true); - $instance = $writer->setLayoutFormatter(new Zend_Log_Formatter_Simple()) - ->setSubjectPrependText('subject'); - - $this->assertTrue($instance instanceof Zend_Log_Writer_Mail); - } - - /** - * @group ZF-9990 - */ - public function testFactory() - { - $config = array( - 'from' => array( - 'email' => 'log@test.framework.zend.com' - ), - 'to' => 'admin@domain.com', - 'subject' => '[error] exceptions on my application' - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $this->assertTrue($writer instanceof Zend_Log_Writer_Mail); - - $writer->write($this->_getEvent()); - $writer->shutdown(); - - $this->assertEquals('admin@domain.com', $this->_transport->recipients); - $this->assertContains('an info message', $this->_transport->body); - $this->assertContains('From: log@test.framework.zend.com', $this->_transport->header); - $this->assertContains('To: admin@domain.com', $this->_transport->header); - $this->assertContains('Subject: [error] exceptions on my application', $this->_transport->header); - } - - /** - * @group ZF-9990 - */ - public function testFactoryShouldSetSubjectPrependText() - { - $config = array( - 'subjectPrependText' => '[error] exceptions on my application' - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $writer->write($this->_getEvent()); - $writer->shutdown(); - - $this->assertContains('Subject: [error] exceptions on my application (INFO=1)', $this->_transport->header); - } - - /** - * @group ZF-9990 - */ - public function testFactoryShouldAcceptCustomMailClass() - { - $this->getMock('Zend_Mail', array(), array(), 'Zend_Stub_Mail_Custom'); - $config = array( - 'class' => 'Zend_Stub_Mail_Custom' - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $this->assertTrue($writer instanceof Zend_Log_Writer_Mail); - } - - /** - * @group ZF-9990 - */ - public function testFactoryShouldSetCharsetForMail() - { - $config = array( - 'charset' => 'UTF-8' - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $writer->write($this->_getEvent()); - $writer->shutdown(); - - $this->assertContains('Content-Type: text/plain; charset=UTF-8', $this->_transport->header); - } - - /** - * @group ZF-9990 - */ - public function testFactoryShouldAllowToSetMultipleRecipientsInArray() - { - $config = array( - 'to' => array( - 'John Doe' => 'admin1@domain.com', - 'admin2@domain.com' - ), - 'cc' => array( - 'bug@domain.com', - 'project' => 'projectname@domain.com' - ) - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $writer->write($this->_getEvent()); - $writer->shutdown(); - - $this->assertContains('admin1@domain.com', $this->_transport->recipients); - $this->assertContains('admin2@domain.com', $this->_transport->recipients); - $this->assertContains('bug@domain.com', $this->_transport->recipients); - $this->assertContains('projectname@domain.com', $this->_transport->recipients); - $this->assertContains('To: John Doe ', $this->_transport->header); - $this->assertContains('admin2@domain.com', $this->_transport->header); - $this->assertContains('Cc: bug@domain.com', $this->_transport->header); - $this->assertContains('project ', $this->_transport->header); - } - - /** - * @group ZF-9990 - */ - public function testFactoryWithLayout() - { - $config = array( - 'layoutOptions' => array( - 'layoutPath' => dirname(__FILE__) . '/_files' - ) - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $writer->write($this->_getEvent()); - $writer->shutdown(); - - $this->assertFalse(empty($this->_transport->boundary)); - $this->assertContains('Content-Type: multipart/', $this->_transport->header); - $this->assertContains('boundary=', $this->_transport->header); - $this->assertContains('Content-Type: text/plain', $this->_transport->body); - $this->assertContains('Content-Type: text/html', $this->_transport->body); - $this->assertContains($this->_transport->boundary, $this->_transport->body); - $this->assertEquals(2, substr_count($this->_transport->body, 'an info message')); - } - - /** - * @group ZF-9990 - */ - public function testFactoryShouldSetLayoutFormatter() - { - $config = array( - 'layoutOptions' => array( - 'layoutPath' => '/path/to/layout/scripts' - ), - 'layoutFormatter' => 'Zend_Log_Formatter_Simple' - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $this->assertTrue($writer->getLayoutFormatter() instanceof Zend_Log_Formatter_Simple); - } - - /** - * @group ZF-9990 - */ - public function testFactoryWithCustomLayoutClass() - { - $this->getMock('Zend_Layout', null, array(), 'Zend_Stub_Layout_Custom'); - $config = array( - 'layout' => 'Zend_Stub_Layout_Custom' - ); - - $writer = Zend_Log_Writer_Mail::factory($config); - $this->assertTrue($writer instanceof Zend_Log_Writer_Mail); - } - - /** - * Returns an array of the Zend_Mail mock object, Zend_Log_Writer_Mail - * object, and Zend_Log objects. - * - * This is just a helper function for the various test methods above. - * - * @return array Numerically indexed array of Zend_Mail, - * Zend_Log_Writer_Mail, Zend_Log, and Zend_Layout objects, - * in that order. - */ - protected function _getSimpleLogger($useLayout = false) - { - // Get a mock object for Zend_Mail so that no emails are actually - // sent. - $mail = $this->getMock('Zend_Mail', array('send')); - - // The send() method can be called any number of times. - $mail->expects($this->any()) - ->method('send'); - - $mail->addTo('zend_log_writer_mail_test@example.org'); - $mail->setFrom('zend_log_writer_mail_test@example.org'); - - // Setup a mock object for Zend_Layout because we can't rely on any - // layout files being in place. - if ($useLayout) { - $layout = $this->getMock('Zend_Layout', array('render')); - $writer = new Zend_Log_Writer_Mail($mail, $layout); - } else { - $writer = new Zend_Log_Writer_Mail($mail); - $layout = null; - } - - $log = new Zend_Log(); - $log->addWriter($writer); - - return array($mail, $writer, $log, $layout); - } - - /** - * Returns a sample of an event - * - * @return array - */ - protected function _getEvent() - { - return array( - 'timestamp' => date('c'), - 'message' => 'an info message', - 'priority' => 6, - 'priorityName' => 'INFO' - ); - } -} - -// Call Zend_Log_Writer_MailTest::main() if this source file is executed directly. -if (PHPUnit_MAIN_METHOD == "Zend_Log_Writer_MailTest::main") { - Zend_Log_Writer_MailTest::main(); -}