summaryrefslogtreecommitdiff
path: root/vendor/symfony/mime/Tests/MessageTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/mime/Tests/MessageTest.php')
-rw-r--r--vendor/symfony/mime/Tests/MessageTest.php151
1 files changed, 151 insertions, 0 deletions
diff --git a/vendor/symfony/mime/Tests/MessageTest.php b/vendor/symfony/mime/Tests/MessageTest.php
new file mode 100644
index 0000000000..dbeb0a5544
--- /dev/null
+++ b/vendor/symfony/mime/Tests/MessageTest.php
@@ -0,0 +1,151 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Mime\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\Mime\Address;
+use Symfony\Component\Mime\Header\Headers;
+use Symfony\Component\Mime\Header\MailboxListHeader;
+use Symfony\Component\Mime\Header\UnstructuredHeader;
+use Symfony\Component\Mime\Message;
+use Symfony\Component\Mime\NamedAddress;
+use Symfony\Component\Mime\Part\TextPart;
+
+class MessageTest extends TestCase
+{
+ public function testConstruct()
+ {
+ $m = new Message();
+ $this->assertNull($m->getBody());
+ $this->assertEquals(new Headers(), $m->getHeaders());
+
+ $m = new Message($h = (new Headers())->addDateHeader('Date', new \DateTime()), $b = new TextPart('content'));
+ $this->assertSame($b, $m->getBody());
+ $this->assertEquals($h, $m->getHeaders());
+
+ $m = new Message();
+ $m->setBody($b);
+ $m->setHeaders($h);
+ $this->assertSame($b, $m->getBody());
+ $this->assertSame($h, $m->getHeaders());
+ }
+
+ public function testGetPreparedHeadersThrowsWhenNoFrom()
+ {
+ $this->expectException(\LogicException::class);
+ (new Message())->getPreparedHeaders();
+ }
+
+ public function testGetPreparedHeadersCloneHeaders()
+ {
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $this->assertNotSame($message->getPreparedHeaders(), $message->getHeaders());
+ }
+
+ public function testGetPreparedHeadersSetRequiredHeaders()
+ {
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $headers = $message->getPreparedHeaders();
+ $this->assertTrue($headers->has('MIME-Version'));
+ $this->assertTrue($headers->has('Message-ID'));
+ $this->assertTrue($headers->has('Date'));
+ $this->assertFalse($headers->has('Bcc'));
+ }
+
+ public function testGetPreparedHeaders()
+ {
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $h = $message->getPreparedHeaders();
+ $this->assertCount(4, iterator_to_array($h->getAll()));
+ $this->assertEquals(new MailboxListHeader('From', [new Address('fabien@symfony.com')]), $h->get('From'));
+ $this->assertEquals(new UnstructuredHeader('MIME-Version', '1.0'), $h->get('mime-version'));
+ $this->assertTrue($h->has('Message-Id'));
+ $this->assertTrue($h->has('Date'));
+
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $message->getHeaders()->addDateHeader('Date', $n = new \DateTimeImmutable());
+ $this->assertEquals($n, $message->getPreparedHeaders()->get('Date')->getDateTime());
+
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $message->getHeaders()->addMailboxListHeader('Bcc', ['fabien@symfony.com']);
+ $this->assertNull($message->getPreparedHeaders()->get('Bcc'));
+ }
+
+ public function testGetPreparedHeadersWithNoFrom()
+ {
+ $this->expectException(\LogicException::class);
+ (new Message())->getPreparedHeaders();
+ }
+
+ public function testGetPreparedHeadersWithNamedFrom()
+ {
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]);
+ $h = $message->getPreparedHeaders();
+ $this->assertEquals(new MailboxListHeader('From', [new NamedAddress('fabien@symfony.com', 'Fabien')]), $h->get('From'));
+ $this->assertTrue($h->has('Message-Id'));
+ }
+
+ public function testGetPreparedHeadersHasSenderWhenNeeded()
+ {
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $this->assertNull($message->getPreparedHeaders()->get('Sender'));
+
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com', 'lucas@symfony.com']);
+ $this->assertEquals('fabien@symfony.com', $message->getPreparedHeaders()->get('Sender')->getAddress()->getAddress());
+
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com', 'lucas@symfony.com']);
+ $message->getHeaders()->addMailboxHeader('Sender', 'thomas@symfony.com');
+ $this->assertEquals('thomas@symfony.com', $message->getPreparedHeaders()->get('Sender')->getAddress()->getAddress());
+ }
+
+ public function testToString()
+ {
+ $message = new Message();
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $expected = <<<EOF
+From: fabien@symfony.com
+MIME-Version: 1.0
+Date: %s
+Message-ID: <%s@symfony.com>
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: quoted-printable
+
+
+EOF;
+ $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", $message->toString()));
+ $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", implode('', iterator_to_array($message->toIterable(), false))));
+
+ $message = new Message(null, new TextPart('content'));
+ $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
+ $expected = <<<EOF
+From: fabien@symfony.com
+MIME-Version: 1.0
+Date: %s
+Message-ID: <%s@symfony.com>
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: quoted-printable
+
+content
+EOF;
+ $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", $message->toString()));
+ $this->assertStringMatchesFormat($expected, str_replace("\r\n", "\n", implode('', iterator_to_array($message->toIterable(), false))));
+ }
+}