| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- <?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->all()));
- $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))));
- }
- }
|