Passed
Push — main ( 9c59f2...5fac80 )
by Peter
02:52
created

SessionBootstrapperTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 43
c 1
b 0
f 0
dl 0
loc 81
rs 10
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testRegisterBindingsCacheSession() 0 16 1
A testRegisterBindingsEncryptionCacheSession() 0 20 1
A testRegisterBindingsDefault() 0 15 1
A testRegisterBindingsArraySessionHandler() 0 14 1
A setUp() 0 3 1
1
<?php
2
3
namespace AbterPhp\Framework\Bootstrappers\Http;
4
5
use Opulence\Cryptography\Encryption\IEncrypter;
6
use Opulence\Framework\Configuration\Config;
7
use Opulence\Ioc\Container;
8
use Opulence\Sessions\Handlers\ArraySessionHandler;
9
use Opulence\Sessions\Handlers\CacheSessionHandler;
10
use Opulence\Sessions\Handlers\FileSessionHandler;
11
use Opulence\Sessions\ISession;
12
use PHPUnit\Framework\TestCase;
13
use SessionHandlerInterface;
14
15
class SessionBootstrapperTest extends TestCase
16
{
17
    /** @var SessionBootstrapper */
18
    protected SessionBootstrapper $sut;
19
20
    public function setUp(): void
21
    {
22
        $this->sut = new SessionBootstrapper();
23
    }
24
25
    public function testRegisterBindingsDefault()
26
    {
27
        Config::set('sessions', 'name', 'foo');
28
        Config::set('sessions', 'handler', 'bar');
29
        Config::set('sessions', 'file.path', 'baz');
30
31
        $container = new Container();
32
33
        $this->sut->registerBindings($container);
34
35
        $actual = $container->resolve(ISession::class);
36
        $this->assertInstanceOf(ISession::class, $actual);
37
38
        $actual = $container->resolve(SessionHandlerInterface::class);
39
        $this->assertInstanceOf(FileSessionHandler::class, $actual);
40
    }
41
42
    public function testRegisterBindingsCacheSession()
43
    {
44
        Config::set('sessions', 'name', 'foo');
45
        Config::set('sessions', 'file.path', 'baz');
46
        Config::set('sessions', 'handler', CacheSessionHandler::class);
47
        Config::set('sessions', 'lifetime', 123);
48
49
        $container = new Container();
50
51
        $this->sut->registerBindings($container);
52
53
        $actual = $container->resolve(ISession::class);
54
        $this->assertInstanceOf(ISession::class, $actual);
55
56
        $actual = $container->resolve(SessionHandlerInterface::class);
57
        $this->assertInstanceOf(CacheSessionHandler::class, $actual);
58
    }
59
60
    public function testRegisterBindingsEncryptionCacheSession()
61
    {
62
        Config::set('sessions', 'name', 'foo');
63
        Config::set('sessions', 'file.path', 'baz');
64
        Config::set('sessions', 'handler', CacheSessionHandler::class);
65
        Config::set('sessions', 'lifetime', 123);
66
        Config::set('sessions', 'isEncrypted', 1);
67
68
        $encrypterMock = $this->getMockBuilder(IEncrypter::class)->getMock();
69
70
        $container = new Container();
71
        $container->bindInstance(IEncrypter::class, $encrypterMock);
72
73
        $this->sut->registerBindings($container);
74
75
        $actual = $container->resolve(ISession::class);
76
        $this->assertInstanceOf(ISession::class, $actual);
77
78
        $actual = $container->resolve(SessionHandlerInterface::class);
79
        $this->assertInstanceOf(CacheSessionHandler::class, $actual);
80
    }
81
82
    public function testRegisterBindingsArraySessionHandler()
83
    {
84
        Config::set('sessions', 'name', 'foo');
85
        Config::set('sessions', 'handler', ArraySessionHandler::class);
86
87
        $container = new Container();
88
89
        $this->sut->registerBindings($container);
90
91
        $actual = $container->resolve(ISession::class);
92
        $this->assertInstanceOf(ISession::class, $actual);
93
94
        $actual = $container->resolve(SessionHandlerInterface::class);
95
        $this->assertInstanceOf(ArraySessionHandler::class, $actual);
96
    }
97
}
98