public function testPluginRespectsAWhitelistOfPatterns()
{
$message = Swift_Message::newInstance()->setSubject('...')->setFrom(array('*****@*****.**' => 'John Doe'))->setTo($to = array('*****@*****.**' => 'Fabien (To)', '*****@*****.**' => 'Chris (To)', '*****@*****.**' => 'Lars (To)'))->setCc($cc = array('*****@*****.**' => 'Fabien (Cc)', '*****@*****.**' => 'Chris (Cc)', '*****@*****.**' => 'Lars (Cc)'))->setBcc($bcc = array('*****@*****.**' => 'Fabien (Bcc)', '*****@*****.**' => 'Chris (Bcc)', '*****@*****.**' => 'John (Bcc)'))->setBody('...');
$recipient = '*****@*****.**';
$patterns = array('/^.*@internal.[a-z]+$/', '/^john-.*$/');
$plugin = new Swift_Plugins_RedirectingPlugin($recipient, $patterns);
$this->assertEquals($recipient, $plugin->getRecipient());
$this->assertEquals($plugin->getWhitelist(), $patterns);
$evt = $this->_createSendEvent($message);
$plugin->beforeSendPerformed($evt);
$this->assertEquals($message->getTo(), array('*****@*****.**' => 'Lars (To)', '*****@*****.**' => null));
$this->assertEquals($message->getCc(), array('*****@*****.**' => 'Lars (Cc)'));
$this->assertEquals($message->getBcc(), array('*****@*****.**' => 'John (Bcc)'));
$plugin->sendPerformed($evt);
$this->assertEquals($message->getTo(), $to);
$this->assertEquals($message->getCc(), $cc);
$this->assertEquals($message->getBcc(), $bcc);
}