]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | ||
3 | namespace Wallabag\UserBundle\Tests\Mailer; | |
4 | ||
5 | use Wallabag\UserBundle\Entity\User; | |
6 | use Wallabag\UserBundle\Mailer\AuthCodeMailer; | |
7 | ||
8 | /** | |
9 | * @see https://www.pmg.com/blog/integration-testing-swift-mailer/ | |
10 | */ | |
11 | final class CountableMemorySpool extends \Swift_MemorySpool implements \Countable | |
12 | { | |
13 | public function count() | |
14 | { | |
15 | return count($this->messages); | |
16 | } | |
17 | ||
18 | public function getMessages() | |
19 | { | |
20 | return $this->messages; | |
21 | } | |
22 | } | |
23 | ||
24 | class AuthCodeMailerTest extends \PHPUnit_Framework_TestCase | |
25 | { | |
26 | protected $mailer; | |
27 | protected $spool; | |
28 | protected $twig; | |
29 | protected $config; | |
30 | ||
31 | protected function setUp() | |
32 | { | |
33 | $this->spool = new CountableMemorySpool(); | |
34 | $transport = new \Swift_Transport_SpoolTransport( | |
35 | new \Swift_Events_SimpleEventDispatcher(), | |
36 | $this->spool | |
37 | ); | |
38 | $this->mailer = new \Swift_Mailer($transport); | |
39 | ||
40 | $twigTemplate = <<<TWIG | |
41 | {% block subject %}subject{% endblock %} | |
42 | {% block body_html %}html body {{ code }}{% endblock %} | |
43 | {% block body_text %}text body {{ support_url }}{% endblock %} | |
44 | TWIG; | |
45 | ||
46 | $this->twig = new \Twig_Environment(new \Twig_Loader_Array(array('@WallabagUserBundle/Resources/views/TwoFactor/email_auth_code.html.twig' => $twigTemplate))); | |
47 | ||
48 | $this->config = $this->getMockBuilder('Craue\ConfigBundle\Util\Config') | |
49 | ->disableOriginalConstructor() | |
50 | ->getMock(); | |
51 | ||
52 | $this->config->expects($this->any()) | |
53 | ->method('get') | |
54 | ->willReturn('http://0.0.0.0/support'); | |
55 | } | |
56 | ||
57 | public function testSendEmail() | |
58 | { | |
59 | $user = new User(); | |
60 | $user->setTwoFactorAuthentication(true); | |
61 | $user->setEmailAuthCode(666666); | |
62 | $user->setEmail('test@wallabag.io'); | |
63 | $user->setName('Bob'); | |
64 | ||
65 | $authCodeMailer = new AuthCodeMailer( | |
66 | $this->mailer, | |
67 | $this->twig, | |
68 | 'nobody@test.io', | |
69 | 'wallabag test', | |
70 | $this->config | |
71 | ); | |
72 | ||
73 | $authCodeMailer->sendAuthCode($user); | |
74 | ||
75 | $this->assertCount(1, $this->spool); | |
76 | ||
77 | $msg = $this->spool->getMessages()[0]; | |
78 | $this->assertArrayHasKey('test@wallabag.io', $msg->getTo()); | |
79 | $this->assertEquals(array('nobody@test.io' => 'wallabag test'), $msg->getFrom()); | |
80 | $this->assertEquals('subject', $msg->getSubject()); | |
81 | $this->assertContains('text body http://0.0.0.0/support', $msg->toString()); | |
82 | $this->assertContains('html body 666666', $msg->toString()); | |
83 | } | |
84 | } |