LOG4PHP-144: LoggerAppenderMail should set Content-type header

Modified appender to set the Content-type header which it retrieves
from the layout.

Also improved tests, and removed the dry mode testing. It's better to get
the appender to actually send an email. For this I used the
[email protected] address which is accessible by the Logging Services PMC.


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

Branch: refs/heads/develop
Commit: ae11f080a47f0580750013cc10f1efb6c2764adb
Parents: 81ab4e1
Author: Ivan Habunek <[email protected]>
Authored: Mon Dec 31 11:39:15 2012 +0100
Committer: Ivan Habunek <[email protected]>
Committed: Mon Dec 31 11:47:53 2012 +0100

----------------------------------------------------------------------
 src/changes/changes.xml                           |    3 +-
 src/main/php/appenders/LoggerAppenderMail.php     |   13 ++-
 src/test/php/appenders/LoggerAppenderMailTest.php |   62 +++++++++-------
 3 files changed, 45 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/ae11f080/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0d60b44..03eabc2 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -20,7 +20,8 @@
                <title>Apache log4php changelog</title>
        </properties>
        <body>
-               <release version="2.3.1" date="SVN">
+               <release version="develop">
+                       <action date="2012-12-31" type="update" 
issue="LOG4PHP-144" dev="Ivan Habunek">Improved LoggerAppenderMail to set the 
Content-type header as defined in layout.</action>
                </release>
                <release version="2.3.0" date="2012-10-13">
                        <action date="2012-10-07" type="fix" 
issue="LOG4PHP-163" dev="Ivan Habunek" due-to="Daniel Wong" due-to-email="dan 
at dsmwong dot com">LoggerPatternConverter formats max incorrectly</action>

http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/ae11f080/src/main/php/appenders/LoggerAppenderMail.php
----------------------------------------------------------------------
diff --git a/src/main/php/appenders/LoggerAppenderMail.php 
b/src/main/php/appenders/LoggerAppenderMail.php
index 9e34b40..29d88c2 100644
--- a/src/main/php/appenders/LoggerAppenderMail.php
+++ b/src/main/php/appenders/LoggerAppenderMail.php
@@ -84,12 +84,15 @@ class LoggerAppenderMail extends LoggerAppender {
                        $to = $this->to;
        
                        if(!empty($this->body) and $from !== null and $to !== 
null and $this->layout !== null) {
-                               $subject = $this->subject;
                                if(!$this->dry) {
-                                       mail(
-                                               $to, $subject, 
-                                               $this->layout->getHeader() . 
$this->body . $this->layout->getFooter(),
-                                               "From: {$from}\r\n");
+                                       $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;
                                }

http://git-wip-us.apache.org/repos/asf/logging-log4php/blob/ae11f080/src/test/php/appenders/LoggerAppenderMailTest.php
----------------------------------------------------------------------
diff --git a/src/test/php/appenders/LoggerAppenderMailTest.php 
b/src/test/php/appenders/LoggerAppenderMailTest.php
index 8dffd8c..a08c4c2 100644
--- a/src/test/php/appenders/LoggerAppenderMailTest.php
+++ b/src/test/php/appenders/LoggerAppenderMailTest.php
@@ -6,16 +6,16 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- * 
- * @category   tests   
+ *
+ * @category   tests
  * @package    log4php
  * @subpackage appenders
  * @license    http://www.apache.org/licenses/LICENSE-2.0 Apache License, 
Version 2.0
@@ -26,34 +26,42 @@
  * @group appenders
  */
 class LoggerAppenderMailTest extends PHPUnit_Framework_TestCase {
-        
+
        public function testRequiresLayout() {
-               $appender = new LoggerAppenderMail(); 
+               $appender = new LoggerAppenderMail();
                self::assertTrue($appender->requiresLayout());
        }
-       
+
        public function testMail() {
-               $appender = new LoggerAppenderMail("myname ");
-               
-               $layout = new LoggerLayoutSimple();
-               $appender->setLayout($layout);
-               $appender->setDry(true);
-               $appender->setTo('[email protected]');
-               $appender->setFrom('Testsender');
-               
+               $appender = new LoggerAppenderMail("testAppender");
+               $appender->setTo('[email protected]');
+               $appender->setFrom('log4php@localhost');
+               $appender->setSubject("Testing text/plain " . date('Y-m-d 
H:i:s'));
                $appender->activateOptions();
-               $event = new LoggerLoggingEvent("LoggerAppenderEchoTest", new 
Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-               $event2 = new LoggerLoggingEvent("LoggerAppenderEchoTest", new 
Logger("TEST"), LoggerLevel::getLevelError(), "testmessage2");
-                
-               ob_start();
-               $appender->append($event);
-               $appender->append($event2);
+
+               $appender->append(LoggerTestHelper::getTraceEvent('tracing'));
+               $appender->append(LoggerTestHelper::getDebugEvent('debugging'));
+               $appender->append(LoggerTestHelper::getInfoEvent('informing'));
+               $appender->append(LoggerTestHelper::getWarnEvent('warning'));
+               $appender->append(LoggerTestHelper::getErrorEvent('erring'));
+               $appender->append(LoggerTestHelper::getFatalEvent('fatality!'));
                $appender->close();
-               $v = ob_get_contents();
-               ob_end_clean();
+       }
 
-               $e = "DRY MODE OF MAIL APP.: Send mail to: [email protected] 
with content: ERROR - testmessage".PHP_EOL."ERROR - testmessage2".PHP_EOL;
-               self::assertEquals($e, $v);
-    }
-    
+       public function testMailHTML() {
+               $appender = new LoggerAppenderMail("testAppender");
+               $appender->setLayout(new LoggerLayoutHtml());
+               $appender->setTo('[email protected]');
+               $appender->setFrom('log4php@localhost');
+               $appender->setSubject("Testing text/html " . date('Y-m-d 
H:i:s'));
+               $appender->activateOptions();
+
+               $appender->append(LoggerTestHelper::getTraceEvent('tracing'));
+               $appender->append(LoggerTestHelper::getDebugEvent('debugging'));
+               $appender->append(LoggerTestHelper::getInfoEvent('informing'));
+               $appender->append(LoggerTestHelper::getWarnEvent('warning'));
+               $appender->append(LoggerTestHelper::getErrorEvent('erring'));
+               $appender->append(LoggerTestHelper::getFatalEvent('fatality!'));
+               $appender->close();
+       }
 }

Reply via email to