You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							120 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							120 lines
						
					
					
						
							3.6 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace yiiunit\extensions\swiftmailer; | 
						|
 | 
						|
use Yii; | 
						|
use yii\swiftmailer\Mailer; | 
						|
 | 
						|
Yii::setAlias('@yii/swiftmailer', __DIR__ . '/../../../../extensions/swiftmailer'); | 
						|
 | 
						|
class MailerTest extends TestCase | 
						|
{ | 
						|
    public function setUp() | 
						|
    { | 
						|
        $this->mockApplication([ | 
						|
            'components' => [ | 
						|
                'email' => $this->createTestEmailComponent() | 
						|
            ] | 
						|
        ]); | 
						|
    } | 
						|
 | 
						|
    /** | 
						|
     * @return Mailer test email component instance. | 
						|
     */ | 
						|
    protected function createTestEmailComponent() | 
						|
    { | 
						|
        $component = new Mailer(); | 
						|
 | 
						|
        return $component; | 
						|
    } | 
						|
 | 
						|
    // Tests : | 
						|
 | 
						|
    public function testSetupTransport() | 
						|
    { | 
						|
        $mailer = new Mailer(); | 
						|
        $mailer->getSwiftMailer(); // make sure accessing SwiftMailer does not affect behavior of setTransport | 
						|
 | 
						|
        $transport = new \Swift_SendmailTransport(); | 
						|
        $mailer->setTransport($transport); | 
						|
        $this->assertSame($transport, $mailer->getSwiftMailer()->getTransport(), 'Unable to setup transport!'); | 
						|
    } | 
						|
 | 
						|
    /** | 
						|
     * @depends testSetupTransport | 
						|
     */ | 
						|
    public function testConfigureTransport() | 
						|
    { | 
						|
        $mailer = new Mailer(); | 
						|
 | 
						|
        $transportConfig = [ | 
						|
            'class' => 'Swift_SmtpTransport', | 
						|
            'host' => 'localhost', | 
						|
            'username' => 'username', | 
						|
            'password' => 'password', | 
						|
        ]; | 
						|
        $mailer->setTransport($transportConfig); | 
						|
        $transport = $mailer->getTransport(); | 
						|
        $this->assertTrue(is_object($transport), 'Unable to setup transport via config!'); | 
						|
        $this->assertEquals($transportConfig['class'], get_class($transport), 'Invalid transport class!'); | 
						|
        $this->assertEquals($transportConfig['host'], $transport->getHost(), 'Invalid transport host!'); | 
						|
    } | 
						|
 | 
						|
    /** | 
						|
     * @depends testConfigureTransport | 
						|
     */ | 
						|
    public function testConfigureTransportConstruct() | 
						|
    { | 
						|
        $mailer = new Mailer(); | 
						|
 | 
						|
        $class = 'Swift_SmtpTransport'; | 
						|
        $host = 'some.test.host'; | 
						|
        $port = 999; | 
						|
        $transportConfig = [ | 
						|
            'class' => $class, | 
						|
            'constructArgs' => [ | 
						|
                $host, | 
						|
                $port, | 
						|
            ], | 
						|
        ]; | 
						|
        $mailer->setTransport($transportConfig); | 
						|
        $transport = $mailer->getTransport(); | 
						|
        $this->assertTrue(is_object($transport), 'Unable to setup transport via config!'); | 
						|
        $this->assertEquals($class, get_class($transport), 'Invalid transport class!'); | 
						|
        $this->assertEquals($host, $transport->getHost(), 'Invalid transport host!'); | 
						|
        $this->assertEquals($port, $transport->getPort(), 'Invalid transport host!'); | 
						|
    } | 
						|
 | 
						|
    /** | 
						|
     * @depends testConfigureTransportConstruct | 
						|
     */ | 
						|
    public function testConfigureTransportWithPlugins() | 
						|
    { | 
						|
        $mailer = new Mailer(); | 
						|
 | 
						|
        $pluginClass = 'Swift_Plugins_ThrottlerPlugin'; | 
						|
        $rate = 10; | 
						|
 | 
						|
        $transportConfig = [ | 
						|
            'class' => 'Swift_SmtpTransport', | 
						|
            'plugins' => [ | 
						|
                [ | 
						|
                    'class' => $pluginClass, | 
						|
                    'constructArgs' => [ | 
						|
                        $rate, | 
						|
                    ], | 
						|
                ], | 
						|
            ], | 
						|
        ]; | 
						|
        $mailer->setTransport($transportConfig); | 
						|
        $transport = $mailer->getTransport(); | 
						|
        $this->assertTrue(is_object($transport), 'Unable to setup transport via config!'); | 
						|
        $this->assertContains(':' . $pluginClass . ':', print_r($transport, true), 'Plugin not added'); | 
						|
    } | 
						|
 | 
						|
    public function testGetSwiftMailer() | 
						|
    { | 
						|
        $mailer = new Mailer(); | 
						|
        $this->assertTrue(is_object($mailer->getSwiftMailer()), 'Unable to get Swift mailer instance!'); | 
						|
    } | 
						|
}
 | 
						|
 |