提交代码
This commit is contained in:
149
vendor/symfony/mime/Tests/Part/DataPartTest.php
vendored
Normal file
149
vendor/symfony/mime/Tests/Part/DataPartTest.php
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
<?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\Part;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Header\Headers;
|
||||
use Symfony\Component\Mime\Header\IdentificationHeader;
|
||||
use Symfony\Component\Mime\Header\ParameterizedHeader;
|
||||
use Symfony\Component\Mime\Header\UnstructuredHeader;
|
||||
use Symfony\Component\Mime\Part\DataPart;
|
||||
|
||||
class DataPartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$p = new DataPart('content');
|
||||
$this->assertEquals('content', $p->getBody());
|
||||
$this->assertEquals(base64_encode('content'), $p->bodyToString());
|
||||
$this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
|
||||
// bodyToIterable() can be called several times
|
||||
$this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
|
||||
$this->assertEquals('application', $p->getMediaType());
|
||||
$this->assertEquals('octet-stream', $p->getMediaSubType());
|
||||
|
||||
$p = new DataPart('content', null, 'text/html');
|
||||
$this->assertEquals('text', $p->getMediaType());
|
||||
$this->assertEquals('html', $p->getMediaSubType());
|
||||
}
|
||||
|
||||
public function testConstructorWithResource()
|
||||
{
|
||||
$f = fopen('php://memory', 'r+', false);
|
||||
fwrite($f, 'content');
|
||||
rewind($f);
|
||||
$p = new DataPart($f);
|
||||
$this->assertEquals('content', $p->getBody());
|
||||
$this->assertEquals(base64_encode('content'), $p->bodyToString());
|
||||
$this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
|
||||
fclose($f);
|
||||
}
|
||||
|
||||
public function testConstructorWithNonStringOrResource()
|
||||
{
|
||||
$this->expectException(\TypeError::class);
|
||||
new DataPart(new \stdClass());
|
||||
}
|
||||
|
||||
public function testHeaders()
|
||||
{
|
||||
$p = new DataPart('content');
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'application/octet-stream'),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
|
||||
new ParameterizedHeader('Content-Disposition', 'attachment')
|
||||
), $p->getPreparedHeaders());
|
||||
|
||||
$p = new DataPart('content', 'photo.jpg', 'text/html');
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
|
||||
new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'photo.jpg', 'filename' => 'photo.jpg'])
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
|
||||
public function testAsInline()
|
||||
{
|
||||
$p = new DataPart('content', 'photo.jpg', 'text/html');
|
||||
$p->asInline();
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
|
||||
new ParameterizedHeader('Content-Disposition', 'inline', ['name' => 'photo.jpg', 'filename' => 'photo.jpg'])
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
|
||||
public function testAsInlineWithCID()
|
||||
{
|
||||
$p = new DataPart('content', 'photo.jpg', 'text/html');
|
||||
$p->asInline();
|
||||
$cid = $p->getContentId();
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'text/html', ['name' => 'photo.jpg']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
|
||||
new ParameterizedHeader('Content-Disposition', 'inline', ['name' => 'photo.jpg', 'filename' => 'photo.jpg']),
|
||||
new IdentificationHeader('Content-ID', $cid)
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
|
||||
public function testFromPath()
|
||||
{
|
||||
$p = DataPart::fromPath($file = __DIR__.'/../Fixtures/mimetypes/test.gif');
|
||||
$content = file_get_contents($file);
|
||||
$this->assertEquals($content, $p->getBody());
|
||||
$this->assertEquals(base64_encode($content), $p->bodyToString());
|
||||
$this->assertEquals(base64_encode($content), implode('', iterator_to_array($p->bodyToIterable())));
|
||||
$this->assertEquals('image', $p->getMediaType());
|
||||
$this->assertEquals('gif', $p->getMediaSubType());
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'image/gif', ['name' => 'test.gif']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
|
||||
new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'test.gif', 'filename' => 'test.gif'])
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
|
||||
public function testFromPathWithMeta()
|
||||
{
|
||||
$p = DataPart::fromPath($file = __DIR__.'/../Fixtures/mimetypes/test.gif', 'photo.gif', 'image/jpeg');
|
||||
$content = file_get_contents($file);
|
||||
$this->assertEquals($content, $p->getBody());
|
||||
$this->assertEquals(base64_encode($content), $p->bodyToString());
|
||||
$this->assertEquals(base64_encode($content), implode('', iterator_to_array($p->bodyToIterable())));
|
||||
$this->assertEquals('image', $p->getMediaType());
|
||||
$this->assertEquals('jpeg', $p->getMediaSubType());
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'image/jpeg', ['name' => 'photo.gif']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
|
||||
new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'photo.gif', 'filename' => 'photo.gif'])
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
|
||||
public function testHasContentId()
|
||||
{
|
||||
$p = new DataPart('content');
|
||||
$this->assertFalse($p->hasContentId());
|
||||
$p->getContentId();
|
||||
$this->assertTrue($p->hasContentId());
|
||||
}
|
||||
|
||||
public function testSerialize()
|
||||
{
|
||||
$r = fopen('php://memory', 'r+', false);
|
||||
fwrite($r, 'Text content');
|
||||
rewind($r);
|
||||
|
||||
$p = new DataPart($r);
|
||||
$p->getHeaders()->addTextHeader('foo', 'bar');
|
||||
$expected = clone $p;
|
||||
$this->assertEquals($expected->toString(), unserialize(serialize($p))->toString());
|
||||
}
|
||||
}
|
||||
42
vendor/symfony/mime/Tests/Part/MessagePartTest.php
vendored
Normal file
42
vendor/symfony/mime/Tests/Part/MessagePartTest.php
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
<?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\Part;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Email;
|
||||
use Symfony\Component\Mime\Header\Headers;
|
||||
use Symfony\Component\Mime\Header\ParameterizedHeader;
|
||||
use Symfony\Component\Mime\Header\UnstructuredHeader;
|
||||
use Symfony\Component\Mime\Part\MessagePart;
|
||||
|
||||
class MessagePartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$p = new MessagePart((new Email())->from('fabien@symfony.com')->text('content'));
|
||||
$this->assertStringContainsString('content', $p->getBody());
|
||||
$this->assertStringContainsString('content', $p->bodyToString());
|
||||
$this->assertStringContainsString('content', implode('', iterator_to_array($p->bodyToIterable())));
|
||||
$this->assertEquals('message', $p->getMediaType());
|
||||
$this->assertEquals('rfc822', $p->getMediaSubType());
|
||||
}
|
||||
|
||||
public function testHeaders()
|
||||
{
|
||||
$p = new MessagePart((new Email())->from('fabien@symfony.com')->text('content')->subject('Subject'));
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'message/rfc822', ['name' => 'Subject.eml']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64'),
|
||||
new ParameterizedHeader('Content-Disposition', 'attachment', ['name' => 'Subject.eml', 'filename' => 'Subject.eml'])
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
}
|
||||
25
vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php
vendored
Normal file
25
vendor/symfony/mime/Tests/Part/Multipart/AlternativePartTest.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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\Part\Multipart;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Part\Multipart\AlternativePart;
|
||||
|
||||
class AlternativePartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$a = new AlternativePart();
|
||||
$this->assertEquals('multipart', $a->getMediaType());
|
||||
$this->assertEquals('alternative', $a->getMediaSubtype());
|
||||
}
|
||||
}
|
||||
28
vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php
vendored
Normal file
28
vendor/symfony/mime/Tests/Part/Multipart/DigestPartTest.php
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<?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\Part\Multipart;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Message;
|
||||
use Symfony\Component\Mime\Part\MessagePart;
|
||||
use Symfony\Component\Mime\Part\Multipart\DigestPart;
|
||||
|
||||
class DigestPartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$r = new DigestPart($a = new MessagePart(new Message()), $b = new MessagePart(new Message()));
|
||||
$this->assertEquals('multipart', $r->getMediaType());
|
||||
$this->assertEquals('digest', $r->getMediaSubtype());
|
||||
$this->assertEquals([$a, $b], $r->getParts());
|
||||
}
|
||||
}
|
||||
66
vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php
vendored
Normal file
66
vendor/symfony/mime/Tests/Part/Multipart/FormDataPartTest.php
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
<?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\Part\Multipart;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Part\DataPart;
|
||||
use Symfony\Component\Mime\Part\Multipart\FormDataPart;
|
||||
use Symfony\Component\Mime\Part\TextPart;
|
||||
|
||||
class FormDataPartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$r = new \ReflectionProperty(TextPart::class, 'encoding');
|
||||
$r->setAccessible(true);
|
||||
|
||||
$b = new TextPart('content');
|
||||
$c = DataPart::fromPath($file = __DIR__.'/../../Fixtures/mimetypes/test.gif');
|
||||
$f = new FormDataPart([
|
||||
'foo' => $content = 'very very long content that will not be cut even if the length is way more than 76 characters, ok?',
|
||||
'bar' => clone $b,
|
||||
'baz' => clone $c,
|
||||
]);
|
||||
$this->assertEquals('multipart', $f->getMediaType());
|
||||
$this->assertEquals('form-data', $f->getMediaSubtype());
|
||||
$t = new TextPart($content, 'utf-8', 'plain', '8bit');
|
||||
$t->setDisposition('form-data');
|
||||
$t->setName('foo');
|
||||
$t->getHeaders()->setMaxLineLength(PHP_INT_MAX);
|
||||
$b->setDisposition('form-data');
|
||||
$b->setName('bar');
|
||||
$b->getHeaders()->setMaxLineLength(PHP_INT_MAX);
|
||||
$r->setValue($b, '8bit');
|
||||
$c->setDisposition('form-data');
|
||||
$c->setName('baz');
|
||||
$c->getHeaders()->setMaxLineLength(PHP_INT_MAX);
|
||||
$r->setValue($c, '8bit');
|
||||
$this->assertEquals([$t, $b, $c], $f->getParts());
|
||||
}
|
||||
|
||||
public function testToString()
|
||||
{
|
||||
$p = DataPart::fromPath($file = __DIR__.'/../../Fixtures/mimetypes/test.gif');
|
||||
$this->assertEquals(base64_encode(file_get_contents($file)), $p->bodyToString());
|
||||
}
|
||||
|
||||
public function testContentLineLength()
|
||||
{
|
||||
$f = new FormDataPart([
|
||||
'foo' => new DataPart($foo = str_repeat('foo', 1000), 'foo.txt', 'text/plain'),
|
||||
'bar' => $bar = str_repeat('bar', 1000),
|
||||
]);
|
||||
$parts = $f->getParts();
|
||||
$this->assertEquals($foo, $parts[0]->bodyToString());
|
||||
$this->assertEquals($bar, $parts[1]->bodyToString());
|
||||
}
|
||||
}
|
||||
25
vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php
vendored
Normal file
25
vendor/symfony/mime/Tests/Part/Multipart/MixedPartTest.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?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\Part\Multipart;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Part\Multipart\MixedPart;
|
||||
|
||||
class MixedPartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$a = new MixedPart();
|
||||
$this->assertEquals('multipart', $a->getMediaType());
|
||||
$this->assertEquals('mixed', $a->getMediaSubtype());
|
||||
}
|
||||
}
|
||||
30
vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php
vendored
Normal file
30
vendor/symfony/mime/Tests/Part/Multipart/RelatedPartTest.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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\Part\Multipart;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Part\Multipart\RelatedPart;
|
||||
use Symfony\Component\Mime\Part\TextPart;
|
||||
|
||||
class RelatedPartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$r = new RelatedPart($a = new TextPart('content'), $b = new TextPart('HTML content', 'utf-8', 'html'), $c = new TextPart('HTML content again', 'utf-8', 'html'));
|
||||
$this->assertEquals('multipart', $r->getMediaType());
|
||||
$this->assertEquals('related', $r->getMediaSubtype());
|
||||
$this->assertEquals([$a, $b, $c], $r->getParts());
|
||||
$this->assertFalse($a->getHeaders()->has('Content-ID'));
|
||||
$this->assertTrue($b->getHeaders()->has('Content-ID'));
|
||||
$this->assertTrue($c->getHeaders()->has('Content-ID'));
|
||||
}
|
||||
}
|
||||
92
vendor/symfony/mime/Tests/Part/TextPartTest.php
vendored
Normal file
92
vendor/symfony/mime/Tests/Part/TextPartTest.php
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
<?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\Part;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Mime\Header\Headers;
|
||||
use Symfony\Component\Mime\Header\ParameterizedHeader;
|
||||
use Symfony\Component\Mime\Header\UnstructuredHeader;
|
||||
use Symfony\Component\Mime\Part\TextPart;
|
||||
|
||||
class TextPartTest extends TestCase
|
||||
{
|
||||
public function testConstructor()
|
||||
{
|
||||
$p = new TextPart('content');
|
||||
$this->assertEquals('content', $p->getBody());
|
||||
$this->assertEquals('content', $p->bodyToString());
|
||||
$this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
|
||||
// bodyToIterable() can be called several times
|
||||
$this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
|
||||
$this->assertEquals('text', $p->getMediaType());
|
||||
$this->assertEquals('plain', $p->getMediaSubType());
|
||||
|
||||
$p = new TextPart('content', null, 'html');
|
||||
$this->assertEquals('html', $p->getMediaSubType());
|
||||
}
|
||||
|
||||
public function testConstructorWithResource()
|
||||
{
|
||||
$f = fopen('php://memory', 'r+', false);
|
||||
fwrite($f, 'content');
|
||||
rewind($f);
|
||||
$p = new TextPart($f);
|
||||
$this->assertEquals('content', $p->getBody());
|
||||
$this->assertEquals('content', $p->bodyToString());
|
||||
$this->assertEquals('content', implode('', iterator_to_array($p->bodyToIterable())));
|
||||
fclose($f);
|
||||
}
|
||||
|
||||
public function testConstructorWithNonStringOrResource()
|
||||
{
|
||||
$this->expectException(\TypeError::class);
|
||||
new TextPart(new \stdClass());
|
||||
}
|
||||
|
||||
public function testHeaders()
|
||||
{
|
||||
$p = new TextPart('content');
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'quoted-printable')
|
||||
), $p->getPreparedHeaders());
|
||||
|
||||
$p = new TextPart('content', 'iso-8859-1');
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'iso-8859-1']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'quoted-printable')
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
|
||||
public function testEncoding()
|
||||
{
|
||||
$p = new TextPart('content', 'utf-8', 'plain', 'base64');
|
||||
$this->assertEquals(base64_encode('content'), $p->bodyToString());
|
||||
$this->assertEquals(base64_encode('content'), implode('', iterator_to_array($p->bodyToIterable())));
|
||||
$this->assertEquals(new Headers(
|
||||
new ParameterizedHeader('Content-Type', 'text/plain', ['charset' => 'utf-8']),
|
||||
new UnstructuredHeader('Content-Transfer-Encoding', 'base64')
|
||||
), $p->getPreparedHeaders());
|
||||
}
|
||||
|
||||
public function testSerialize()
|
||||
{
|
||||
$r = fopen('php://memory', 'r+', false);
|
||||
fwrite($r, 'Text content');
|
||||
rewind($r);
|
||||
|
||||
$p = new TextPart($r);
|
||||
$p->getHeaders()->addTextHeader('foo', 'bar');
|
||||
$expected = clone $p;
|
||||
$this->assertEquals($expected->toString(), unserialize(serialize($p))->toString());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user