Skip to content

Commit bb4747b

Browse files
committed
[Mailer] Mailjet - Add test case on API transport
1 parent e33c97a commit bb4747b

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
3+
4+
namespace Symfony\Component\Mailer\Bridge\Mailjet\Tests\Transport;
5+
6+
7+
use PHPUnit\Framework\TestCase;
8+
use Symfony\Component\Mailer\Bridge\Mailjet\Transport\MailjetApiTransport;
9+
use Symfony\Component\Mailer\Envelope;
10+
use Symfony\Component\Mime\Address;
11+
use Symfony\Component\Mime\Email;
12+
13+
class MailjetApiTransportTest extends TestCase
14+
{
15+
protected const USER = 'u$er';
16+
protected const PASSWORD = 'pa$s';
17+
18+
/**
19+
* @dataProvider getTransportData
20+
*/
21+
public function testToString(MailjetApiTransport $transport, string $expected)
22+
{
23+
$this->assertSame($expected, (string) $transport);
24+
}
25+
26+
public function getTransportData()
27+
{
28+
return [
29+
[
30+
new MailjetApiTransport(self::USER, self::PASSWORD),
31+
'mailjet+api://api.mailjet.com',
32+
],
33+
[
34+
(new MailjetApiTransport(self::USER, self::PASSWORD))->setHost('example.com'),
35+
'mailjet+api://example.com',
36+
],
37+
];
38+
}
39+
40+
public function testPayloadFormat()
41+
{
42+
$email = (new Email())
43+
->subject('Sending email to mailjet API');
44+
$email->getHeaders()
45+
->addTextHeader('X-authorized-header', 'authorized')
46+
->addTextHeader('X-MJ-TemplateLanguage', 'forbidden'); // This header is forbidden
47+
$envelope = new Envelope(new Address('foo@example.com', 'Foo'), [new Address('bar@example.com', 'Bar'), new Address('baz@example.com', 'Baz')]);
48+
49+
$transport = new MailjetApiTransport(self::USER, self::PASSWORD);
50+
$method = new \ReflectionMethod(MailjetApiTransport::class, 'getPayload');
51+
$method->setAccessible(true);
52+
$payload = $method->invoke($transport, $email, $envelope);
53+
54+
$this->assertArrayHasKey('Messages', $payload);
55+
$this->assertNotEmpty($payload['Messages']);
56+
57+
$message = $payload['Messages'][0];
58+
$this->assertArrayHasKey('Subject', $message);
59+
$this->assertEquals('Sending email to mailjet API', $message['Subject']);
60+
61+
$this->assertArrayHasKey('Headers', $message);
62+
$headers = $message['Headers'];
63+
$this->assertArrayHasKey('X-authorized-header', $headers);
64+
$this->assertEquals('authorized', $headers['X-authorized-header']);
65+
$this->assertArrayNotHasKey('x-mj-templatelanguage', $headers);
66+
$this->assertArrayNotHasKey('X-MJ-TemplateLanguage', $headers);
67+
68+
$this->assertArrayHasKey('From', $message);
69+
$sender = $message['From'];
70+
$this->assertArrayHasKey('Email', $sender);
71+
$this->assertArrayHasKey('Name', $sender);
72+
$this->assertEquals('foo@example.com', $sender['Email']);
73+
$this->assertEquals('Foo', $sender['Name']);
74+
75+
$this->assertArrayHasKey('To', $message);
76+
$recipients = $message['To'];
77+
$this->assertIsArray($recipients);
78+
$this->assertCount(2, $recipients);
79+
$this->assertEquals('bar@example.com', $recipients[0]['Email']);
80+
$this->assertEquals('', $recipients[0]['Name']); // For Recipients, even if the name is filled, it is empty
81+
$this->assertEquals('baz@example.com', $recipients[1]['Email']);
82+
$this->assertEquals('', $recipients[1]['Name']);
83+
84+
85+
}
86+
}

0 commit comments

Comments
 (0)