TextPartTest.php
3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <[email protected]>
*
* 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());
}
}