Updated Branches:
  refs/heads/develop 7375b297d -> 3d4cc6030

Improvements to LoggerAppenderMail

* added checking of required parameters (to, from)
* removed deprecated dry mode which is no longer used for testing
* improved tests


Project: http://git-wip-us.apache.org/repos/asf/logging-log4php/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4php/commit/3d4cc603
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4php/tree/3d4cc603
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4php/diff/3d4cc603

Branch: refs/heads/develop
Commit: 3d4cc60304d494a4fb004cac05320a2aa8980ed7
Parents: ae11f08
Author: Ivan Habunek <[email protected]>
Authored: Mon Dec 31 11:54:51 2012 +0100
Committer: Ivan Habunek <[email protected]>
Committed: Mon Dec 31 11:54:51 2012 +0100

----------------------------------------------------------------------
 src/main/php/appenders/LoggerAppenderMail.php     |   57 +++++++---------
 src/test/php/appenders/LoggerAppenderMailTest.php |   24 +++++++
 2 files changed, 48 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/3d4cc603/src/main/php/appenders/LoggerAppenderMail.php
----------------------------------------------------------------------
diff --git a/src/main/php/appenders/LoggerAppenderMail.php 
b/src/main/php/appenders/LoggerAppenderMail.php
index 29d88c2..fe26e1a 100644
--- a/src/main/php/appenders/LoggerAppenderMail.php
+++ b/src/main/php/appenders/LoggerAppenderMail.php
@@ -45,7 +45,7 @@ class LoggerAppenderMail extends LoggerAppender {
         * Email address to put in From field of the email.
         * @var string
         */
-       protected $from = null;
+       protected $from;
 
        /** 
         * The subject of the email.
@@ -57,14 +57,7 @@ class LoggerAppenderMail extends LoggerAppender {
         * One or more comma separated email addresses to which to send the 
email. 
         * @var string
         */
-       protected $to = null;
-
-       /** 
-        * Indiciates whether this appender should run in dry mode.
-        * @deprecated
-        * @var boolean 
-        */
-       protected $dry = false;
+       protected $to;
 
        /** 
         * Buffer which holds the email contents before it is sent. 
@@ -73,29 +66,32 @@ class LoggerAppenderMail extends LoggerAppender {
        protected $body = '';
        
        public function append(LoggerLoggingEvent $event) {
-               if($this->layout !== null) {
-                       $this->body .= $this->layout->format($event);
+               $this->body .= $this->layout->format($event);
+       }
+
+       public function activateOptions() {
+               if (empty($this->from)) {
+                       $this->warn("Required parameter 'from' not set. Closing 
appender.");
+                       $this->closed = true;
+                       return;
+               }
+               if (empty($this->to)) {
+                       $this->warn("Required parameter 'to' not set. Closing 
appender.");
+                       $this->closed = true;
+                       return;
                }
        }
        
        public function close() {
-               if($this->closed != true) {
-                       $from = $this->from;
-                       $to = $this->to;
-       
-                       if(!empty($this->body) and $from !== null and $to !== 
null and $this->layout !== null) {
-                               if(!$this->dry) {
-                                       $message = $this->layout->getHeader() . 
$this->body . $this->layout->getFooter();
-                                       $subject = $this->subject;
-                                       $contentType = 
$this->layout->getContentType();
-                                       
-                                       $headers = "From: {$from}\r\n";
-                                       $headers .= "Content-Type: 
{$contentType}\r\n";
-                                       
-                                       mail($to, $subject, $message, $headers);
-                               } else {
-                                   echo "DRY MODE OF MAIL APP.: Send mail to: 
".$to." with content: ".$this->body;
-                               }
+               if(!$this->closed) {
+                       if(!empty($this->body)) {
+                               $message = $this->layout->getHeader() . 
$this->body . $this->layout->getFooter();
+                               $contentType = $this->layout->getContentType();
+
+                               $headers = "From: {$this->from}\r\n";
+                               $headers .= "Content-Type: {$contentType}\r\n";
+
+                               mail($this->to, $this->subject, $message, 
$headers);
                        }
                        $this->closed = true;
                }
@@ -130,9 +126,4 @@ class LoggerAppenderMail extends LoggerAppender {
        public function getFrom() {
                return $this->from;
        }
-
-       /** Enables or disables dry mode. */
-       public function setDry($dry) {
-               $this->setBoolean('dry', $dry);
-       }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/3d4cc603/src/test/php/appenders/LoggerAppenderMailTest.php
----------------------------------------------------------------------
diff --git a/src/test/php/appenders/LoggerAppenderMailTest.php 
b/src/test/php/appenders/LoggerAppenderMailTest.php
index a08c4c2..a949258 100644
--- a/src/test/php/appenders/LoggerAppenderMailTest.php
+++ b/src/test/php/appenders/LoggerAppenderMailTest.php
@@ -64,4 +64,28 @@ class LoggerAppenderMailTest extends 
PHPUnit_Framework_TestCase {
                $appender->append(LoggerTestHelper::getFatalEvent('fatality!'));
                $appender->close();
        }
+
+       /**
+        * @expectedException PHPUnit_Framework_Error
+        * @expectedExceptionMessage Required parameter 'to' not set.
+        */
+       public function testErrorMissingTo() {
+               $appender = new LoggerAppenderMail("testAppender");
+               $appender->setLayout(new LoggerLayoutHtml());
+               $appender->setFrom('log4php@localhost');
+               $appender->setSubject("Testing text/html " . date('Y-m-d 
H:i:s'));
+               $appender->activateOptions();
+       }
+
+       /**
+        * @expectedException PHPUnit_Framework_Error
+        * @expectedExceptionMessage Required parameter 'from' not set.
+        */
+       public function testErrorMissingFrom() {
+               $appender = new LoggerAppenderMail("testAppender");
+               $appender->setLayout(new LoggerLayoutHtml());
+               $appender->setTo('[email protected]');
+               $appender->setSubject("Testing text/html " . date('Y-m-d 
H:i:s'));
+               $appender->activateOptions();
+       }
 }

Reply via email to