messages); } public function getMessages() { return $this->messages; } } class AuthCodeMailerTest extends \PHPUnit_Framework_TestCase { protected $mailer; protected $spool; protected $twig; protected $config; protected function setUp() { $this->spool = new CountableMemorySpool(); $transport = new \Swift_Transport_SpoolTransport( new \Swift_Events_SimpleEventDispatcher(), $this->spool ); $this->mailer = new \Swift_Mailer($transport); $twigTemplate = <<twig = new \Twig_Environment(new \Twig_Loader_Array(['WallabagUserBundle:TwoFactor:email_auth_code.html.twig' => $twigTemplate])); $this->config = $this->getMockBuilder('Craue\ConfigBundle\Util\Config') ->disableOriginalConstructor() ->getMock(); $this->config->expects($this->any()) ->method('get') ->willReturn('http://0.0.0.0/support'); } public function testSendEmail() { $user = new User(); $user->setTwoFactorAuthentication(true); $user->setEmailAuthCode(666666); $user->setEmail('test@wallabag.io'); $user->setName('Bob'); $authCodeMailer = new AuthCodeMailer( $this->mailer, $this->twig, 'nobody@test.io', 'wallabag test', $this->config ); $authCodeMailer->sendAuthCode($user); $this->assertCount(1, $this->spool); $msg = $this->spool->getMessages()[0]; $this->assertArrayHasKey('test@wallabag.io', $msg->getTo()); $this->assertEquals(['nobody@test.io' => 'wallabag test'], $msg->getFrom()); $this->assertEquals('subject', $msg->getSubject()); $this->assertContains('text body http://0.0.0.0/support', $msg->toString()); $this->assertContains('html body 666666', $msg->toString()); } }