kodus /
mail
| 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
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 |