Passed
Pull Request — master (#81)
by
unknown
05:47
created

GesdinetJWTRefreshTokenExtensionSpec::let()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 7
rs 9.4285
cc 1
eloc 5
nc 1
nop 1
1
<?php
2
3
namespace spec\Gesdinet\JWTRefreshTokenBundle\DependencyInjection;
4
5
use Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken;
6
use PhpSpec\ObjectBehavior;
7
use Prophecy\Argument;
8
use Symfony\Component\DependencyInjection\Alias;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
11
12
class GesdinetJWTRefreshTokenExtensionSpec extends ObjectBehavior
13
{
14
    function let(ContainerBuilder $container)
15
    {
16
        $container->fileExists(dirname(dirname(__DIR__)).'/DependencyInjection/../Resources/config/services.yml')
17
                  ->willReturn(true);
18
        $container->has('gesdinet.jwtrefreshtoken.name_generator.underscore')
19
                  ->willReturn(true);
20
    }
21
22
23
    public function it_is_initializable()
24
    {
25
        $this->shouldHaveType('Gesdinet\JWTRefreshTokenBundle\DependencyInjection\GesdinetJWTRefreshTokenExtension');
26
    }
27
28
29
    public function it_should_set_parameters_correctly(ContainerBuilder $container)
30
    {
31
        // setParameter calls with default values
32
        $container->setParameter('gesdinet_jwt_refresh_token.ttl', 2592000)
33
                  ->shouldBeCalled();
34
        $container->setParameter('gesdinet_jwt_refresh_token.ttl_update', false)
35
                  ->shouldBeCalled();
36
        $container->setParameter('gesdinet_jwt_refresh_token.security.firewall', 'api')
37
                  ->shouldBeCalled();
38
        $container->setParameter('gesdinet_jwt_refresh_token.user_provider', null)
39
                  ->shouldBeCalled();
40
        $container->setParameter('gesdinet.jwtrefreshtoken.refresh_token.class', RefreshToken::class)
41
                  ->shouldBeCalled();
42
        $container->setParameter('gesdinet.jwtrefreshtoken.entity_manager.id', 'doctrine.orm.entity_manager')
43
                  ->shouldBeCalled();
44
45
        // Ignore these calls
46
        $container->has(Argument::cetera())
47
                  ->willReturn();
48
        $container->setDefinition(Argument::cetera())
49
                  ->willReturn();
50
        $container->setAlias(Argument::cetera())
51
                  ->willReturn();
52
53
        $configs = [];
54
        $this->load($configs, $container);
55
    }
56
57
58
    function it_should_configure_the_default_naming_generator(ContainerBuilder $container)
59
    {
60
        $container->setAlias(
61
            'gesdinet.jwtrefreshtoken.name_generator.default',
62
            Argument::exact(new Alias('gesdinet.jwtrefreshtoken.name_generator.underscore'))
63
        )
64
                  ->shouldBeCalled();
65
66
        // Ignore these calls
67
        $container->setParameter(Argument::cetera())
68
                  ->willReturn();
69
        $container->setDefinition(Argument::cetera())
70
                  ->willReturn();
71
72
        $configs = [];
73
        $this->load($configs, $container);
74
    }
75
76
77
    function it_should_throw_an_exception_if_specifying_a_non_existent_name_generator_service(
78
        ContainerBuilder $container
79
    ) {
80
        $container->has('some.service.name')
81
                  ->willReturn(false);
82
83
        // Ignore these calls
84
        $container->setParameter(Argument::cetera())
85
                  ->willReturn();
86
        $container->setDefinition(Argument::cetera())
87
                  ->willReturn();
88
        $container->setAlias(Argument::cetera())
89
                  ->willReturn();
90
91
        $configs = [['parameter_name_generator' => 'some.service.name']];
92
        $this->shouldThrow(ServiceNotFoundException::class)
93
             ->during('load', [$configs, $container]);
94
    }
95
96
97
    function it_should_configure_a_custom_name_generator(ContainerBuilder $container)
98
    {
99
        // Expectations
100
        $container->setAlias('gesdinet.jwtrefreshtoken.name_generator.default', 'some.service.name')
101
                  ->shouldBeCalled();
102
103
        // Stubs
104
        $container->has('some.service.name')
105
                  ->willReturn(true);
106
107
        // Ignore these calls
108
        $container->setParameter(Argument::cetera())
109
                  ->willReturn();
110
        $container->setDefinition(Argument::cetera())
111
                  ->willReturn();
112
        $container->setAlias(Argument::cetera())
113
                  ->willReturn();
114
115
        $configs = [['parameter_name_generator' => 'some.service.name']];
116
        $this->load($configs, $container);
117
    }
118
}
119