Completed
Push — master ( e56856...67d12b )
by Antonio
04:26
created

TransportFactoryTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 95
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 1
cbo 8
dl 0
loc 95
rs 10
1
<?php
2
namespace Da\Mailer\Test\Transport;
3
4
use Da\Mailer\Transport\MailTransport;
5
use Da\Mailer\Transport\MailTransportFactory;
6
use Da\Mailer\Transport\SendMailTransport;
7
use Da\Mailer\Transport\SendMailTransportFactory;
8
use Da\Mailer\Transport\SmtpTransport;
9
use Da\Mailer\Transport\SmtpTransportFactory;
10
use Da\Mailer\Transport\TransportFactory;
11
use Da\Mailer\Transport\TransportInterface;
12
use PHPUnit_Framework_TestCase;
13
14
class TransportFactoryTest extends PHPUnit_Framework_TestCase
15
{
16
    public function testCreateTransport()
17
    {
18
        $smtpConfig = [
19
            'host' => 'localhost',
20
            'port' => 587,
21
            'options' => [
22
                'username' => 'Obiwoan',
23
                'password' => 'Kenovi',
24
                'encryption' => 'ssl',
25
                'authMode' => 'Plain',
26
            ],
27
        ];
28
        $mailConfig = ['options' => '-f%s'];
29
        $sendMailConfig = ['options' => '/usr/sbin/sendmail -s'];
30
31
        $smtpFactory = TransportFactory::create($smtpConfig, TransportInterface::TYPE_SMTP);
32
33
        $this->assertTrue($smtpFactory instanceof SmtpTransportFactory);
34
35
        $smtp = $smtpFactory->create();
36
37
        $this->assertTrue($smtp instanceof SmtpTransport);
38
39
        /**
40
         * @var \Swift_SmtpTransport
41
         */
42
        $swift = $smtp->getSwiftTransportInstance();
43
44
        $this->assertEquals($smtpConfig['host'], $swift->getHost());
45
        $this->assertEquals($smtpConfig['port'], $swift->getPort());
46
        $this->assertEquals($smtpConfig['options']['username'], $swift->getUsername());
47
        $this->assertEquals($smtpConfig['options']['password'], $swift->getPassword());
48
        $this->assertEquals($smtpConfig['options']['encryption'], $swift->getEncryption());
49
        $this->assertEquals($smtpConfig['options']['authMode'], $swift->getAuthMode());
50
51
        $mailFactory = TransportFactory::create($mailConfig, TransportInterface::TYPE_MAIL);
52
53
        $this->assertTrue($mailFactory instanceof MailTransportFactory);
54
55
        $mail = $mailFactory->create();
56
57
        $this->assertTrue($mail instanceof MailTransport);
58
59
        /**
60
         * @var \Swift_MailTransport
61
         */
62
        $swift = $mail->getSwiftTransportInstance();
63
64
        $this->assertEquals($mailConfig['options'], $swift->getExtraParams());
65
66
        $sendMailFactory = TransportFactory::create($sendMailConfig, TransportInterface::TYPE_SEND_MAIL);
67
68
        $this->assertTrue($sendMailFactory instanceof SendMailTransportFactory);
69
70
        $sendMail = $sendMailFactory->create();
71
72
        $this->assertTrue($sendMail instanceof SendMailTransport);
73
        /**
74
         * @var \Swift_SendMailTransport
75
         */
76
        $swift = $sendMail->getSwiftTransportInstance();
77
78
        $this->assertEquals($sendMailConfig['options'], $swift->getCommand());
79
    }
80
81
    public function testDefaultParameters()
82
    {
83
        $mail = (new MailTransportFactory([]))->create();
84
        $sendMail = (new SendMailTransportFactory([]))->create();
85
86
        /**
87
         * @var \Swift_MailTransport
88
         */
89
        $swift = $mail->getSwiftTransportInstance();
90
91
        $this->assertEquals('-f%s', $swift->getExtraParams());
92
93
        /**
94
         * @var \Swift_SendMailTransport
95
         */
96
        $swift = $sendMail->getSwiftTransportInstance();
97
98
        $this->assertEquals('/usr/sbin/sendmail -bs', $swift->getCommand());
99
    }
100
101
    /**
102
     * @expectedException \Da\Mailer\Exception\InvalidTransportTypeArgumentException
103
     */
104
    public function testInvalidTransportTypeArgumentException()
105
    {
106
        $transport = TransportFactory::create([], 'starWars');
107
    }
108
}
109