diff options
Diffstat (limited to 'vendor/symfony/mime/Tests/Header/HeadersTest.php')
| -rw-r--r-- | vendor/symfony/mime/Tests/Header/HeadersTest.php | 245 |
1 files changed, 245 insertions, 0 deletions
diff --git a/vendor/symfony/mime/Tests/Header/HeadersTest.php b/vendor/symfony/mime/Tests/Header/HeadersTest.php new file mode 100644 index 0000000000..2f4a1dd635 --- /dev/null +++ b/vendor/symfony/mime/Tests/Header/HeadersTest.php @@ -0,0 +1,245 @@ +<?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\Header; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Mime\Address; +use Symfony\Component\Mime\Header\Headers; +use Symfony\Component\Mime\Header\IdentificationHeader; +use Symfony\Component\Mime\Header\MailboxListHeader; +use Symfony\Component\Mime\Header\UnstructuredHeader; + +class HeadersTest extends TestCase +{ + public function testAddMailboxListHeaderDelegatesToFactory() + { + $headers = new Headers(); + $headers->addMailboxListHeader('From', ['person@domain']); + $this->assertNotNull($headers->get('From')); + } + + public function testAddDateHeaderDelegatesToFactory() + { + $dateTime = new \DateTimeImmutable(); + $headers = new Headers(); + $headers->addDateHeader('Date', $dateTime); + $this->assertNotNull($headers->get('Date')); + } + + public function testAddTextHeaderDelegatesToFactory() + { + $headers = new Headers(); + $headers->addTextHeader('Subject', 'some text'); + $this->assertNotNull($headers->get('Subject')); + } + + public function testAddParameterizedHeaderDelegatesToFactory() + { + $headers = new Headers(); + $headers->addParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']); + $this->assertNotNull($headers->get('Content-Type')); + } + + public function testAddIdHeaderDelegatesToFactory() + { + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $this->assertNotNull($headers->get('Message-ID')); + } + + public function testAddPathHeaderDelegatesToFactory() + { + $headers = new Headers(); + $headers->addPathHeader('Return-Path', 'some@path'); + $this->assertNotNull($headers->get('Return-Path')); + } + + public function testHasReturnsFalseWhenNoHeaders() + { + $headers = new Headers(); + $this->assertFalse($headers->has('Some-Header')); + } + + public function testAddedMailboxListHeaderIsSeenByHas() + { + $headers = new Headers(); + $headers->addMailboxListHeader('From', ['person@domain']); + $this->assertTrue($headers->has('From')); + } + + public function testAddedDateHeaderIsSeenByHas() + { + $dateTime = new \DateTimeImmutable(); + $headers = new Headers(); + $headers->addDateHeader('Date', $dateTime); + $this->assertTrue($headers->has('Date')); + } + + public function testAddedTextHeaderIsSeenByHas() + { + $headers = new Headers(); + $headers->addTextHeader('Subject', 'some text'); + $this->assertTrue($headers->has('Subject')); + } + + public function testAddedParameterizedHeaderIsSeenByHas() + { + $headers = new Headers(); + $headers->addParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']); + $this->assertTrue($headers->has('Content-Type')); + } + + public function testAddedIdHeaderIsSeenByHas() + { + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $this->assertTrue($headers->has('Message-ID')); + } + + public function testAddedPathHeaderIsSeenByHas() + { + $headers = new Headers(); + $headers->addPathHeader('Return-Path', 'some@path'); + $this->assertTrue($headers->has('Return-Path')); + } + + public function testNewlySetHeaderIsSeenByHas() + { + $headers = new Headers(); + $headers->add(new UnstructuredHeader('X-Foo', 'bar')); + $this->assertTrue($headers->has('X-Foo')); + } + + public function testHasCanDistinguishMultipleHeaders() + { + $headers = new Headers(); + $headers->addTextHeader('X-Test', 'some@id'); + $headers->addTextHeader('X-Test', 'other@id'); + $this->assertTrue($headers->has('X-Test')); + } + + public function testGet() + { + $header = new IdentificationHeader('Message-ID', 'some@id'); + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $this->assertEquals($header->toString(), $headers->get('Message-ID')->toString()); + } + + public function testGetReturnsNullIfHeaderNotSet() + { + $headers = new Headers(); + $this->assertNull($headers->get('Message-ID')); + } + + public function testGetAllReturnsAllHeadersMatchingName() + { + $header0 = new UnstructuredHeader('X-Test', 'some@id'); + $header1 = new UnstructuredHeader('X-Test', 'other@id'); + $header2 = new UnstructuredHeader('X-Test', 'more@id'); + $headers = new Headers(); + $headers->addTextHeader('X-Test', 'some@id'); + $headers->addTextHeader('X-Test', 'other@id'); + $headers->addTextHeader('X-Test', 'more@id'); + $this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->getAll('X-Test'))); + } + + public function testGetAllReturnsAllHeadersIfNoArguments() + { + $header0 = new IdentificationHeader('Message-ID', 'some@id'); + $header1 = new UnstructuredHeader('Subject', 'thing'); + $header2 = new MailboxListHeader('To', [new Address('person@example.org')]); + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $headers->addTextHeader('Subject', 'thing'); + $headers->addMailboxListHeader('To', [new Address('person@example.org')]); + $this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->getAll())); + } + + public function testGetAllReturnsEmptyArrayIfNoneSet() + { + $headers = new Headers(); + $this->assertEquals([], iterator_to_array($headers->getAll('Received'))); + } + + public function testRemoveRemovesAllHeadersWithName() + { + $header0 = new UnstructuredHeader('X-Test', 'some@id'); + $header1 = new UnstructuredHeader('X-Test', 'other@id'); + $headers = new Headers(); + $headers->addIdHeader('X-Test', 'some@id'); + $headers->addIdHeader('X-Test', 'other@id'); + $headers->remove('X-Test'); + $this->assertFalse($headers->has('X-Test')); + $this->assertFalse($headers->has('X-Test')); + } + + public function testHasIsNotCaseSensitive() + { + $header = new IdentificationHeader('Message-ID', 'some@id'); + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $this->assertTrue($headers->has('message-id')); + } + + public function testGetIsNotCaseSensitive() + { + $header = new IdentificationHeader('Message-ID', 'some@id'); + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $this->assertEquals($header, $headers->get('message-id')); + } + + public function testGetAllIsNotCaseSensitive() + { + $header = new IdentificationHeader('Message-ID', 'some@id'); + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $this->assertEquals([$header], iterator_to_array($headers->getAll('message-id'))); + } + + public function testRemoveIsNotCaseSensitive() + { + $header = new IdentificationHeader('Message-ID', 'some@id'); + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $headers->remove('message-id'); + $this->assertFalse($headers->has('Message-ID')); + } + + public function testToStringJoinsHeadersTogether() + { + $headers = new Headers(); + $headers->addTextHeader('Foo', 'bar'); + $headers->addTextHeader('Zip', 'buttons'); + $this->assertEquals("Foo: bar\r\nZip: buttons\r\n", $headers->toString()); + } + + public function testHeadersWithoutBodiesAreNotDisplayed() + { + $headers = new Headers(); + $headers->addTextHeader('Foo', 'bar'); + $headers->addTextHeader('Zip', ''); + $this->assertEquals("Foo: bar\r\n", $headers->toString()); + } + + public function testToArray() + { + $headers = new Headers(); + $headers->addIdHeader('Message-ID', 'some@id'); + $headers->addTextHeader('Foo', str_repeat('a', 60).pack('C', 0x8F)); + $this->assertEquals([ + 'Message-ID: <some@id>', + "Foo: =?utf-8?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r\n =?utf-8?Q?aaaa?=", + ], $headers->toArray()); + } +} |
