This repository has been archived by the owner on Feb 21, 2020. It is now read-only.
forked from zendframework/zend-mail
/
HeaderLoaderTest.php
94 lines (92 loc) · 3.21 KB
/
HeaderLoaderTest.php
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
93
94
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2018 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace ZendTest\Mail\Header;
use PHPUnit\Framework\TestCase;
use Zend\Mail\Header;
class HeaderLoaderTest extends TestCase
{
/**
* @var Header\HeaderLoader
*/
private $headerLoader;
public function setUp()
{
$this->headerLoader = new Header\HeaderLoader();
}
public function provideHeaderNames()
{
return [
'with existing name' => ['to', Header\To::class],
'with non-existent name' => ['foo', null],
'with default value' => ['foo', Header\GenericHeader::class, Header\GenericHeader::class],
];
}
/**
* @param $name
* @param $expected
* @param $default
* @dataProvider provideHeaderNames
*/
public function testHeaderIsProperlyLoaded($name, $expected, $default = null)
{
$this->assertEquals($expected, $this->headerLoader->get($name, $default));
}
public function testHeaderExistenceIsProperlyChecked()
{
$this->assertTrue($this->headerLoader->has('to'));
$this->assertTrue($this->headerLoader->has('To'));
$this->assertTrue($this->headerLoader->has('Reply_to'));
$this->assertTrue($this->headerLoader->has('SUBJECT'));
$this->assertFalse($this->headerLoader->has('foo'));
$this->assertFalse($this->headerLoader->has('bar'));
}
public function testHeaderCanBeAdded()
{
$this->assertFalse($this->headerLoader->has('foo'));
$this->headerLoader->add('foo', Header\GenericHeader::class);
$this->assertTrue($this->headerLoader->has('foo'));
}
public function testHeaderCanBeRemoved()
{
$this->assertTrue($this->headerLoader->has('to'));
$this->headerLoader->remove('to');
$this->assertFalse($this->headerLoader->has('to'));
}
public static function expectedHeaders()
{
return [
['bcc', Header\Bcc::class],
['cc', Header\Cc::class],
['contenttype', Header\ContentType::class],
['content_type', Header\ContentType::class],
['content-type', Header\ContentType::class],
['date', Header\Date::class],
['from', Header\From::class],
['mimeversion', Header\MimeVersion::class],
['mime_version', Header\MimeVersion::class],
['mime-version', Header\MimeVersion::class],
['received', Header\Received::class],
['replyto', Header\ReplyTo::class],
['reply_to', Header\ReplyTo::class],
['reply-to', Header\ReplyTo::class],
['sender', Header\Sender::class],
['subject', Header\Subject::class],
['to', Header\To::class],
];
}
/**
* @dataProvider expectedHeaders
* @param $name
* @param $class
*/
public function testDefaultHeadersMapResolvesProperHeader($name, $class)
{
$this->assertEquals($class, $this->headerLoader->get($name));
}
}