Pārlūkot izejas kodu

add tests for NativeMailerHandler

Elan Ruusamäe 10 gadi atpakaļ
vecāks
revīzija
2e03107b56
1 mainītis faili ar 37 papildinājumiem un 0 dzēšanām
  1. 37 0
      tests/Monolog/Handler/NativeMailerHandlerTest.php

+ 37 - 0
tests/Monolog/Handler/NativeMailerHandlerTest.php

@@ -12,9 +12,21 @@
 namespace Monolog\Handler;
 
 use Monolog\TestCase;
+use Monolog\Logger;
+use InvalidArgumentException;
+
+function mail($to, $subject, $message, $additional_headers = null, $additional_parameters = null)
+{
+    $GLOBALS['mail'][] = func_get_args();
+}
 
 class NativeMailerHandlerTest extends TestCase
 {
+    protected function setUp()
+    {
+        $GLOBALS['mail'] = array();
+    }
+
     /**
      * @expectedException InvalidArgumentException
      */
@@ -58,4 +70,29 @@ class NativeMailerHandlerTest extends TestCase
         $mailer = new NativeMailerHandler('spammer@example.org', 'dear victim', 'receiver@example.org');
         $mailer->setEncoding("utf-8\r\nFrom: faked@attacker.org");
     }
+
+    public function testSend() {
+        $to = 'spammer@example.org';
+        $subject = 'dear victim';
+        $from = 'receiver@example.org';
+
+        $mailer = new NativeMailerHandler($to, $subject, $from);
+        $mailer->handleBatch(array());
+
+        // batch is empty, nothing sent
+        $this->assertEmpty($GLOBALS['mail']);
+
+        // non-empty batch
+        $mailer->handle($this->getRecord(Logger::ERROR, "Foo\nBar\r\n\r\nBaz"));
+        $this->assertNotEmpty($GLOBALS['mail']);
+        $this->assertInternalType('array', $GLOBALS['mail']);
+        $this->assertArrayHasKey('0', $GLOBALS['mail']);
+        $params = $GLOBALS['mail'][0];
+        $this->assertCount(5, $params);
+        $this->assertSame($to, $params[0]);
+        $this->assertSame($subject, $params[1]);
+        $this->assertStringEndsWith(" test.ERROR: Foo Bar  Baz [] []\n", $params[2]);
+        $this->assertSame("From: $from\r\nContent-type: text/plain; charset=utf-8\r\n", $params[3]);
+        $this->assertSame('', $params[4]);
+    }
 }