summaryrefslogtreecommitdiff
path: root/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php')
-rw-r--r--vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php183
1 files changed, 183 insertions, 0 deletions
diff --git a/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php
new file mode 100644
index 0000000..bfd5669
--- /dev/null
+++ b/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Plugins/RedirectingPluginTest.php
@@ -0,0 +1,183 @@
+<?php
+
+class Swift_Plugins_RedirectingPluginTest extends \PHPUnit_Framework_TestCase
+{
+ public function testRecipientCanBeSetAndFetched()
+ {
+ $plugin = new Swift_Plugins_RedirectingPlugin('fabien@example.com');
+ $this->assertEquals('fabien@example.com', $plugin->getRecipient());
+ $plugin->setRecipient('chris@example.com');
+ $this->assertEquals('chris@example.com', $plugin->getRecipient());
+ }
+
+ public function testPluginChangesRecipients()
+ {
+ $message = Swift_Message::newInstance()
+ ->setSubject('...')
+ ->setFrom(array('john@example.com' => 'John Doe'))
+ ->setTo($to = array(
+ 'fabien-to@example.com' => 'Fabien (To)',
+ 'chris-to@example.com' => 'Chris (To)',
+ ))
+ ->setCc($cc = array(
+ 'fabien-cc@example.com' => 'Fabien (Cc)',
+ 'chris-cc@example.com' => 'Chris (Cc)',
+ ))
+ ->setBcc($bcc = array(
+ 'fabien-bcc@example.com' => 'Fabien (Bcc)',
+ 'chris-bcc@example.com' => 'Chris (Bcc)',
+ ))
+ ->setBody('...')
+ ;
+
+ $plugin = new Swift_Plugins_RedirectingPlugin('god@example.com');
+
+ $evt = $this->_createSendEvent($message);
+
+ $plugin->beforeSendPerformed($evt);
+
+ $this->assertEquals($message->getTo(), array('god@example.com' => ''));
+ $this->assertEquals($message->getCc(), array());
+ $this->assertEquals($message->getBcc(), array());
+
+ $plugin->sendPerformed($evt);
+
+ $this->assertEquals($message->getTo(), $to);
+ $this->assertEquals($message->getCc(), $cc);
+ $this->assertEquals($message->getBcc(), $bcc);
+ }
+
+ public function testPluginRespectsUnsetToList()
+ {
+ $message = Swift_Message::newInstance()
+ ->setSubject('...')
+ ->setFrom(array('john@example.com' => 'John Doe'))
+ ->setCc($cc = array(
+ 'fabien-cc@example.com' => 'Fabien (Cc)',
+ 'chris-cc@example.com' => 'Chris (Cc)',
+ ))
+ ->setBcc($bcc = array(
+ 'fabien-bcc@example.com' => 'Fabien (Bcc)',
+ 'chris-bcc@example.com' => 'Chris (Bcc)',
+ ))
+ ->setBody('...')
+ ;
+
+ $plugin = new Swift_Plugins_RedirectingPlugin('god@example.com');
+
+ $evt = $this->_createSendEvent($message);
+
+ $plugin->beforeSendPerformed($evt);
+
+ $this->assertEquals($message->getTo(), array('god@example.com' => ''));
+ $this->assertEquals($message->getCc(), array());
+ $this->assertEquals($message->getBcc(), array());
+
+ $plugin->sendPerformed($evt);
+
+ $this->assertEquals($message->getTo(), array());
+ $this->assertEquals($message->getCc(), $cc);
+ $this->assertEquals($message->getBcc(), $bcc);
+ }
+
+ public function testPluginRespectsAWhitelistOfPatterns()
+ {
+ $message = Swift_Message::newInstance()
+ ->setSubject('...')
+ ->setFrom(array('john@example.com' => 'John Doe'))
+ ->setTo($to = array(
+ 'fabien-to@example.com' => 'Fabien (To)',
+ 'chris-to@example.com' => 'Chris (To)',
+ 'lars-to@internal.com' => 'Lars (To)',
+ ))
+ ->setCc($cc = array(
+ 'fabien-cc@example.com' => 'Fabien (Cc)',
+ 'chris-cc@example.com' => 'Chris (Cc)',
+ 'lars-cc@internal.org' => 'Lars (Cc)',
+ ))
+ ->setBcc($bcc = array(
+ 'fabien-bcc@example.com' => 'Fabien (Bcc)',
+ 'chris-bcc@example.com' => 'Chris (Bcc)',
+ 'john-bcc@example.org' => 'John (Bcc)',
+ ))
+ ->setBody('...')
+ ;
+
+ $recipient = 'god@example.com';
+ $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@internal.com' => 'Lars (To)', 'god@example.com' => null));
+ $this->assertEquals($message->getCc(), array('lars-cc@internal.org' => 'Lars (Cc)'));
+ $this->assertEquals($message->getBcc(), array('john-bcc@example.org' => 'John (Bcc)'));
+
+ $plugin->sendPerformed($evt);
+
+ $this->assertEquals($message->getTo(), $to);
+ $this->assertEquals($message->getCc(), $cc);
+ $this->assertEquals($message->getBcc(), $bcc);
+ }
+
+ public function testArrayOfRecipientsCanBeExplicitlyDefined()
+ {
+ $message = Swift_Message::newInstance()
+ ->setSubject('...')
+ ->setFrom(array('john@example.com' => 'John Doe'))
+ ->setTo(array(
+ 'fabien@example.com' => 'Fabien',
+ 'chris@example.com' => 'Chris (To)',
+ 'lars-to@internal.com' => 'Lars (To)',
+ ))
+ ->setCc(array(
+ 'fabien@example.com' => 'Fabien',
+ 'chris-cc@example.com' => 'Chris (Cc)',
+ 'lars-cc@internal.org' => 'Lars (Cc)',
+ ))
+ ->setBcc(array(
+ 'fabien@example.com' => 'Fabien',
+ 'chris-bcc@example.com' => 'Chris (Bcc)',
+ 'john-bcc@example.org' => 'John (Bcc)',
+ ))
+ ->setBody('...')
+ ;
+
+ $recipients = array('god@example.com', 'fabien@example.com');
+ $patterns = array('/^.*@internal.[a-z]+$/');
+
+ $plugin = new Swift_Plugins_RedirectingPlugin($recipients, $patterns);
+
+ $evt = $this->_createSendEvent($message);
+
+ $plugin->beforeSendPerformed($evt);
+
+ $this->assertEquals(
+ $message->getTo(),
+ array('fabien@example.com' => 'Fabien', 'lars-to@internal.com' => 'Lars (To)', 'god@example.com' => null)
+ );
+ $this->assertEquals(
+ $message->getCc(),
+ array('fabien@example.com' => 'Fabien', 'lars-cc@internal.org' => 'Lars (Cc)')
+ );
+ $this->assertEquals($message->getBcc(), array('fabien@example.com' => 'Fabien'));
+ }
+
+ private function _createSendEvent(Swift_Mime_Message $message)
+ {
+ $evt = $this->getMockBuilder('Swift_Events_SendEvent')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $evt->expects($this->any())
+ ->method('getMessage')
+ ->will($this->returnValue($message));
+
+ return $evt;
+ }
+}