/tests/bug/Swift/Bug38Test.php
PHP | 192 lines | 165 code | 27 blank | 0 comment | 1 complexity | a7a5b934f6789a193a5a8e510c26a104 MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.1
- <?php
- class Swift_Bug38Test extends \PHPUnit\Framework\TestCase
- {
- private $attFile;
- private $attFileName;
- private $attFileType;
- protected function setUp(): void
- {
- $this->attFileName = 'data.txt';
- $this->attFileType = 'text/plain';
- $this->attFile = __DIR__.'/../../_samples/files/data.txt';
- Swift_Preferences::getInstance()->setCharset('utf-8');
- }
- public function testWritingMessageToByteStreamProducesCorrectStructure()
- {
- $message = new Swift_Message();
- $message->setSubject('test subject');
- $message->setTo('user@domain.tld');
- $message->setCc('other@domain.tld');
- $message->setFrom('user@domain.tld');
- $image = new Swift_Image('<data>', 'image.gif', 'image/gif');
- $cid = $message->embed($image);
- $message->setBody('HTML part', 'text/html');
- $id = $message->getId();
- $date = preg_quote($message->getDate()->format('r'), '~');
- $boundary = $message->getBoundary();
- $imgId = $image->getId();
- $stream = new Swift_ByteStream_ArrayByteStream();
- $message->toByteStream($stream);
- $this->assertPatternInStream(
- '~^'.
- 'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.$date."\r\n".
- 'Subject: test subject'."\r\n".
- 'From: user@domain.tld'."\r\n".
- 'To: user@domain.tld'."\r\n".
- 'Cc: other@domain.tld'."\r\n".
- 'MIME-Version: 1.0'."\r\n".
- 'Content-Type: multipart/related;'."\r\n".
- ' boundary="'.$boundary.'"'."\r\n".
- "\r\n\r\n".
- '--'.$boundary."\r\n".
- 'Content-Type: text/html; charset=utf-8'."\r\n".
- 'Content-Transfer-Encoding: quoted-printable'."\r\n".
- "\r\n".
- 'HTML part'.
- "\r\n\r\n".
- '--'.$boundary."\r\n".
- 'Content-Type: image/gif; name=image.gif'."\r\n".
- 'Content-Transfer-Encoding: base64'."\r\n".
- 'Content-ID: <'.preg_quote($imgId, '~').'>'."\r\n".
- 'Content-Disposition: inline; filename=image.gif'."\r\n".
- "\r\n".
- preg_quote(base64_encode('<data>'), '~').
- "\r\n\r\n".
- '--'.$boundary.'--'."\r\n".
- '$~D',
- $stream
- );
- }
- public function testWritingMessageToByteStreamTwiceProducesCorrectStructure()
- {
- $message = new Swift_Message();
- $message->setSubject('test subject');
- $message->setTo('user@domain.tld');
- $message->setCc('other@domain.tld');
- $message->setFrom('user@domain.tld');
- $image = new Swift_Image('<data>', 'image.gif', 'image/gif');
- $cid = $message->embed($image);
- $message->setBody('HTML part', 'text/html');
- $id = $message->getId();
- $date = preg_quote($message->getDate()->format('r'), '~');
- $boundary = $message->getBoundary();
- $imgId = $image->getId();
- $pattern = '~^'.
- 'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.$date."\r\n".
- 'Subject: test subject'."\r\n".
- 'From: user@domain.tld'."\r\n".
- 'To: user@domain.tld'."\r\n".
- 'Cc: other@domain.tld'."\r\n".
- 'MIME-Version: 1.0'."\r\n".
- 'Content-Type: multipart/related;'."\r\n".
- ' boundary="'.$boundary.'"'."\r\n".
- "\r\n\r\n".
- '--'.$boundary."\r\n".
- 'Content-Type: text/html; charset=utf-8'."\r\n".
- 'Content-Transfer-Encoding: quoted-printable'."\r\n".
- "\r\n".
- 'HTML part'.
- "\r\n\r\n".
- '--'.$boundary."\r\n".
- 'Content-Type: image/gif; name=image.gif'."\r\n".
- 'Content-Transfer-Encoding: base64'."\r\n".
- 'Content-ID: <'.preg_quote($imgId, '~').'>'."\r\n".
- 'Content-Disposition: inline; filename=image.gif'."\r\n".
- "\r\n".
- preg_quote(base64_encode('<data>'), '~').
- "\r\n\r\n".
- '--'.$boundary.'--'."\r\n".
- '$~D'
- ;
- $streamA = new Swift_ByteStream_ArrayByteStream();
- $streamB = new Swift_ByteStream_ArrayByteStream();
- $message->toByteStream($streamA);
- $message->toByteStream($streamB);
- $this->assertPatternInStream($pattern, $streamA);
- $this->assertPatternInStream($pattern, $streamB);
- }
- public function testWritingMessageToByteStreamTwiceUsingAFileAttachment()
- {
- $message = new Swift_Message();
- $message->setSubject('test subject');
- $message->setTo('user@domain.tld');
- $message->setCc('other@domain.tld');
- $message->setFrom('user@domain.tld');
- $attachment = Swift_Attachment::fromPath($this->attFile);
- $message->attach($attachment);
- $message->setBody('HTML part', 'text/html');
- $id = $message->getId();
- $date = preg_quote($message->getDate()->format('r'), '~');
- $boundary = $message->getBoundary();
- $streamA = new Swift_ByteStream_ArrayByteStream();
- $streamB = new Swift_ByteStream_ArrayByteStream();
- $pattern = '~^'.
- 'Message-ID: <'.$id.'>'."\r\n".
- 'Date: '.$date."\r\n".
- 'Subject: test subject'."\r\n".
- 'From: user@domain.tld'."\r\n".
- 'To: user@domain.tld'."\r\n".
- 'Cc: other@domain.tld'."\r\n".
- 'MIME-Version: 1.0'."\r\n".
- 'Content-Type: multipart/mixed;'."\r\n".
- ' boundary="'.$boundary.'"'."\r\n".
- "\r\n\r\n".
- '--'.$boundary."\r\n".
- 'Content-Type: text/html; charset=utf-8'."\r\n".
- 'Content-Transfer-Encoding: quoted-printable'."\r\n".
- "\r\n".
- 'HTML part'.
- "\r\n\r\n".
- '--'.$boundary."\r\n".
- 'Content-Type: '.$this->attFileType.'; name='.$this->attFileName."\r\n".
- 'Content-Transfer-Encoding: base64'."\r\n".
- 'Content-Disposition: attachment; filename='.$this->attFileName."\r\n".
- "\r\n".
- preg_quote(base64_encode(file_get_contents($this->attFile)), '~').
- "\r\n\r\n".
- '--'.$boundary.'--'."\r\n".
- '$~D'
- ;
- $message->toByteStream($streamA);
- $message->toByteStream($streamB);
- $this->assertPatternInStream($pattern, $streamA);
- $this->assertPatternInStream($pattern, $streamB);
- }
- public function assertPatternInStream($pattern, $stream, $message = '%s')
- {
- $string = '';
- while (false !== $bytes = $stream->read(8192)) {
- $string .= $bytes;
- }
- $this->assertRegExp($pattern, $string, $message);
- }
- }