Completed
Pull Request — master (#81)
by
unknown
10:54
created

GesdinetJWTRefreshTokenExtensionSpec   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 113
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 5
c 2
b 1
f 0
lcom 0
cbo 5
dl 0
loc 113
rs 10

5 Methods

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