Passed
Push — attributes ( d4959e...6cfdd6 )
by Peter
03:00
created

TransportBootstrapperTest::tearDown()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 6
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 8
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Framework\Bootstrappers\Email;
6
7
use AbterPhp\Framework\Constant\Env;
8
use AbterPhp\Framework\Environments\Environment;
9
use AbterPhp\Framework\Exception\Config;
10
use Opulence\Ioc\Container;
11
use PHPUnit\Framework\TestCase;
12
use Swift_SendmailTransport;
13
use Swift_SmtpTransport;
14
use Swift_Transport;
15
16
class TransportBootstrapperTest extends TestCase
17
{
18
    /** @var TransportBootstrapper - System Under Test */
19
    protected TransportBootstrapper $sut;
20
21
    public function setUp(): void
22
    {
23
        Environment::unsetVar(Env::EMAIL_SMTP_HOST);
24
        Environment::unsetVar(Env::EMAIL_SMTP_PORT);
25
        Environment::unsetVar(Env::EMAIL_SMTP_ENCRYPTION);
26
        Environment::unsetVar(Env::EMAIL_SMTP_USERNAME);
27
        Environment::unsetVar(Env::EMAIL_SMTP_PASSWORD);
28
        Environment::unsetVar(Env::EMAIL_SENDMAIL_COMMAND);
29
30
        $this->sut = new TransportBootstrapper();
31
    }
32
33
    public function testRegisterBindingsSmtp(): void
34
    {
35
        Environment::setVar(Env::EMAIL_SMTP_HOST, 'foo');
36
        Environment::setVar(Env::EMAIL_SMTP_PORT, 'bar');
37
38
        $container = new Container();
39
40
        $this->sut->registerBindings($container);
41
42
        $actual = $container->resolve(Swift_Transport::class);
43
        $this->assertInstanceOf(Swift_SmtpTransport::class, $actual);
44
    }
45
46
    public function testRegisterBindingsSmtpSetsUserNameAndPassword(): void
47
    {
48
        Environment::setVar(Env::EMAIL_SMTP_HOST, 'foo');
49
        Environment::setVar(Env::EMAIL_SMTP_PORT, 'bar');
50
        Environment::setVar(Env::EMAIL_SMTP_ENCRYPTION, 'baz');
51
        Environment::setVar(Env::EMAIL_SMTP_USERNAME, 'quix');
52
        Environment::setVar(Env::EMAIL_SMTP_PASSWORD, 'sterp');
53
54
        $container = new Container();
55
56
        $this->sut->registerBindings($container);
57
58
        /** @var Swift_SmtpTransport $actual */
59
        $actual = $container->resolve(Swift_Transport::class);
60
        $this->assertInstanceOf(Swift_SmtpTransport::class, $actual);
61
        $this->assertSame('quix', $actual->getUsername());
62
        $this->assertSame('sterp', $actual->getPassword());
63
    }
64
65
    public function testRegisterBindingsSendmail(): void
66
    {
67
        Environment::setVar(Env::EMAIL_SENDMAIL_COMMAND, 'foo');
68
69
        $container = new Container();
70
71
        $this->sut->registerBindings($container);
72
73
        /** @var Swift_SmtpTransport $actual */
74
        $actual = $container->resolve(Swift_Transport::class);
75
        $this->assertInstanceOf(Swift_SendmailTransport::class, $actual);
76
    }
77
78
    public function testRegisterBindingsTransport(): void
79
    {
80
        $this->expectException(Config::class);
81
82
        $container = new Container();
83
84
        $this->sut->registerBindings($container);
85
    }
86
}
87