nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							179 lines
						
					
					
						
							5.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							179 lines
						
					
					
						
							5.6 KiB
						
					
					
				
								<?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\Header\IdentificationHeader;
							 | 
						|
								
							 | 
						|
								class IdentificationHeaderTest extends TestCase
							 | 
						|
								{
							 | 
						|
								    public function testValueMatchesMsgIdSpec()
							 | 
						|
								    {
							 | 
						|
								        /* -- RFC 2822, 3.6.4.
							 | 
						|
								         message-id      =       "Message-ID:" msg-id CRLF
							 | 
						|
								
							 | 
						|
								         in-reply-to     =       "In-Reply-To:" 1*msg-id CRLF
							 | 
						|
								
							 | 
						|
								         references      =       "References:" 1*msg-id CRLF
							 | 
						|
								
							 | 
						|
								         msg-id          =       [CFWS] "<" id-left "@" id-right ">" [CFWS]
							 | 
						|
								
							 | 
						|
								         id-left         =       dot-atom-text / no-fold-quote / obs-id-left
							 | 
						|
								
							 | 
						|
								         id-right        =       dot-atom-text / no-fold-literal / obs-id-right
							 | 
						|
								
							 | 
						|
								         no-fold-quote   =       DQUOTE *(qtext / quoted-pair) DQUOTE
							 | 
						|
								
							 | 
						|
								         no-fold-literal =       "[" *(dtext / quoted-pair) "]"
							 | 
						|
								        */
							 | 
						|
								
							 | 
						|
								        $header = new IdentificationHeader('Message-ID', 'id-left@id-right');
							 | 
						|
								        $this->assertEquals('<id-left@id-right>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIdCanBeRetrievedVerbatim()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('Message-ID', 'id-left@id-right');
							 | 
						|
								        $this->assertEquals('id-left@id-right', $header->getId());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testMultipleIdsCanBeSet()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('References', 'c@d');
							 | 
						|
								        $header->setIds(['a@b', 'x@y']);
							 | 
						|
								        $this->assertEquals(['a@b', 'x@y'], $header->getIds());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testSettingMultipleIdsProducesAListValue()
							 | 
						|
								    {
							 | 
						|
								        /* -- RFC 2822, 3.6.4.
							 | 
						|
								        The "References:" and "In-Reply-To:" field each contain one or more
							 | 
						|
								        unique message identifiers, optionally separated by CFWS.
							 | 
						|
								
							 | 
						|
								         .. SNIP ..
							 | 
						|
								
							 | 
						|
								         in-reply-to     =       "In-Reply-To:" 1*msg-id CRLF
							 | 
						|
								
							 | 
						|
								         references      =       "References:" 1*msg-id CRLF
							 | 
						|
								         */
							 | 
						|
								
							 | 
						|
								        $header = new IdentificationHeader('References', ['a@b', 'x@y']);
							 | 
						|
								        $this->assertEquals('<a@b> <x@y>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIdLeftCanBeQuoted()
							 | 
						|
								    {
							 | 
						|
								        /* -- RFC 2822, 3.6.4.
							 | 
						|
								         id-left         =       dot-atom-text / no-fold-quote / obs-id-left
							 | 
						|
								         */
							 | 
						|
								
							 | 
						|
								        $header = new IdentificationHeader('References', '"ab"@c');
							 | 
						|
								        $this->assertEquals('"ab"@c', $header->getId());
							 | 
						|
								        $this->assertEquals('<"ab"@c>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIdLeftCanContainAnglesAsQuotedPairs()
							 | 
						|
								    {
							 | 
						|
								        /* -- RFC 2822, 3.6.4.
							 | 
						|
								         no-fold-quote   =       DQUOTE *(qtext / quoted-pair) DQUOTE
							 | 
						|
								         */
							 | 
						|
								
							 | 
						|
								        $header = new IdentificationHeader('References', '"a\\<\\>b"@c');
							 | 
						|
								        $this->assertEquals('"a\\<\\>b"@c', $header->getId());
							 | 
						|
								        $this->assertEquals('<"a\\<\\>b"@c>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIdLeftCanBeDotAtom()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('References', 'a.b+&%$.c@d');
							 | 
						|
								        $this->assertEquals('a.b+&%$.c@d', $header->getId());
							 | 
						|
								        $this->assertEquals('<a.b+&%$.c@d>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @expectedException \Exception
							 | 
						|
								     * @expectedMessageException "a b c" is not valid id-left
							 | 
						|
								     */
							 | 
						|
								    public function testInvalidIdLeftThrowsException()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('References', 'a b c@d');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIdRightCanBeDotAtom()
							 | 
						|
								    {
							 | 
						|
								        /* -- RFC 2822, 3.6.4.
							 | 
						|
								         id-right        =       dot-atom-text / no-fold-literal / obs-id-right
							 | 
						|
								         */
							 | 
						|
								
							 | 
						|
								        $header = new IdentificationHeader('References', 'a@b.c+&%$.d');
							 | 
						|
								        $this->assertEquals('a@b.c+&%$.d', $header->getId());
							 | 
						|
								        $this->assertEquals('<a@b.c+&%$.d>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIdRightCanBeLiteral()
							 | 
						|
								    {
							 | 
						|
								        /* -- RFC 2822, 3.6.4.
							 | 
						|
								         no-fold-literal =       "[" *(dtext / quoted-pair) "]"
							 | 
						|
								        */
							 | 
						|
								
							 | 
						|
								        $header = new IdentificationHeader('References', 'a@[1.2.3.4]');
							 | 
						|
								        $this->assertEquals('a@[1.2.3.4]', $header->getId());
							 | 
						|
								        $this->assertEquals('<a@[1.2.3.4]>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testIdRigthIsIdnEncoded()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('References', 'a@ä');
							 | 
						|
								        $this->assertEquals('a@ä', $header->getId());
							 | 
						|
								        $this->assertEquals('<a@xn--4ca>', $header->getBodyAsString());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @expectedException \Exception
							 | 
						|
								     * @expectedMessageException "b c d" is not valid id-right
							 | 
						|
								     */
							 | 
						|
								    public function testInvalidIdRightThrowsException()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('References', 'a@b c d');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @expectedException \Exception
							 | 
						|
								     * @expectedMessageException "abc" is does not contain @
							 | 
						|
								     */
							 | 
						|
								    public function testMissingAtSignThrowsException()
							 | 
						|
								    {
							 | 
						|
								        /* -- RFC 2822, 3.6.4.
							 | 
						|
								         msg-id          =       [CFWS] "<" id-left "@" id-right ">" [CFWS]
							 | 
						|
								         */
							 | 
						|
								        $header = new IdentificationHeader('References', 'abc');
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testSetBody()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('Message-ID', 'c@d');
							 | 
						|
								        $header->setBody('a@b');
							 | 
						|
								        $this->assertEquals(['a@b'], $header->getIds());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testGetBody()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('Message-ID', 'a@b');
							 | 
						|
								        $this->assertEquals(['a@b'], $header->getBody());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testStringValue()
							 | 
						|
								    {
							 | 
						|
								        $header = new IdentificationHeader('References', ['a@b', 'x@y']);
							 | 
						|
								        $this->assertEquals('References: <a@b> <x@y>', $header->toString());
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |