MessageCest::rejectInvalidUTF8MessageBody()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 17
nc 1
nop 1
dl 0
loc 25
rs 9.7
c 1
b 0
f 0
1
<?php
2
3
namespace Kodus\Mail\Test\Unit;
4
5
use DateTime;
6
use DateTimeZone;
7
use InvalidArgumentException;
8
use Kodus\Mail\Address;
9
use Kodus\Mail\Header;
10
use Kodus\Mail\Message;
11
use UnitTester;
12
13
/**
14
 * NOTE: other message behavior not covered by this test is covered by the `MIMEWriter` test
15
 */
16
class MessageCest
17
{
18
    public function setHeader(UnitTester $I)
19
    {
20
        $message = new Message(
21
            new Address("[email protected]"),
22
            new Address("[email protected]"),
23
            "Hello, Bob",
24
            null
25
        );
26
27
        $message->addHeader("X-Foo", "foo");
28
29
        $I->assertEquals([new Header("X-Foo", "foo")], $message->getHeaders());
30
31
        $message->addHeader("X-FoO", "bar");
32
33
        $I->assertEquals([new Header("X-Foo", "foo"), new Header("X-FoO", "bar")], $message->getHeaders(), "can append headers with same name");
34
35
        $message->setHeader("X-FOO", "baz");
36
37
        $I->assertEquals([new Header("X-FOO", "baz")], $message->getHeaders(), "can overwrite headers case-insensitively");
38
    }
39
40
    public function rejectInvalidUTF8MessageBody(UnitTester $I)
41
    {
42
        $I->expectThrowable(
43
            InvalidArgumentException::class,
44
            function () {
45
                $message = new Message(
0 ignored issues
show
Unused Code introduced by
The assignment to $message is dead and can be removed.
Loading history...
46
                    new Address("[email protected]"),
47
                    new Address("[email protected]"),
48
                    "La la la",
49
                    "\xc3\x28"
50
                );
51
            }
52
        );
53
54
        $message = new Message(
55
            new Address("[email protected]"),
56
            new Address("[email protected]"),
57
            "La la",
58
            "Blu blu"
59
        );
60
61
        $I->expectThrowable(
62
            InvalidArgumentException::class,
63
            function () use ($message) {
64
                $message->setHTML("\xc3\x28");
65
            }
66
        );
67
    }
68
69
    public function setDate(UnitTester $I)
70
    {
71
        $message = new Message(
72
            new Address("[email protected]"),
73
            new Address("[email protected]"),
74
            "Hello, Bob",
75
            null
76
        );
77
78
        // try setting a Date from a string in two different system timezones:
79
80
        date_default_timezone_set("Europe/Copenhagen");
81
82
        $message->setDate("Thu, 15 Sep 2016 17:20:54");
83
84
        $I->assertSame("Thu, 15 Sep 2016 17:20:54 +0200", $message->getDate()->format("r"));
85
86
        date_default_timezone_set("UTC");
87
88
        $message->setDate("Thu, 15 Sep 2016 17:20:54");
89
90
        $I->assertSame("Thu, 15 Sep 2016 17:20:54 +0000", $message->getDate()->format("r"));
91
92
        // try setting a Date from an UNIX timestamp in two different system timezones:
93
94
        date_default_timezone_set("Europe/Copenhagen");
95
96
        $message->setDate(1473952854);
97
98
        $I->assertSame("Thu, 15 Sep 2016 17:20:54 +0200", $message->getDate()->format("r"));
99
100
        date_default_timezone_set("UTC");
101
102
        $message->setDate(1473952854);
103
104
        $I->assertSame("Thu, 15 Sep 2016 15:20:54 +0000", $message->getDate()->format("r"));
105
106
        // try setting a Date from a DateTime instance:
107
108
        $date = new DateTime("@" . strtotime("Thu, 15 Sep 2016 17:20:54 +0200"));
109
110
        $date->setTimezone(new DateTimeZone("Europe/Copenhagen"));
111
112
        $message->setDate($date);
113
114
        $I->assertSame("Thu, 15 Sep 2016 17:20:54 +0200", $message->getDate()->format("r"));
115
    }
116
}
117