Failed Conditions
Push — issue#666 ( f415d0...521a08 )
by Guilherme
12:02
created

LoggedInUserListenerTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 81
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testOnKernelRequestNotOAuthToken() 0 22 1
B testOnKernelRequest() 0 33 1
A testOnKernelRequestNotMaster() 0 20 1
1
<?php
2
/**
3
 * This file is part of the login-cidadao project or it's bundles.
4
 *
5
 * (c) Guilherme Donato <guilhermednt on github>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace LoginCidadao\APIBundle\Tests\Event;
12
13
use LoginCidadao\APIBundle\Event\LoggedInUserListener;
14
use LoginCidadao\OAuthBundle\Entity\AccessToken;
15
use LoginCidadao\OAuthBundle\Entity\AccessTokenRepository;
16
use LoginCidadao\OAuthBundle\Entity\Client;
17
use SimpleThings\EntityAudit\AuditConfiguration;
18
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
19
use Symfony\Component\HttpKernel\HttpKernelInterface;
20
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
21
22
class LoggedInUserListenerTest extends \PHPUnit_Framework_TestCase
23
{
24
    public function testOnKernelRequest()
25
    {
26
        $client = new Client();
27
        $accessTokenToken = 'access_token';
28
        $accessToken = new AccessToken();
29
        $accessToken->setToken($accessTokenToken);
30
        $accessToken->setClient($client);
31
32
        /** @var \PHPUnit_Framework_MockObject_MockObject|AccessTokenRepository $accessTokenRepo */
33
        $accessTokenRepo = $this->getMockBuilder('LoginCidadao\OAuthBundle\Entity\AccessTokenRepository')
34
            ->disableOriginalConstructor()->getMock();
35
        $accessTokenRepo->expects($this->once())
0 ignored issues
show
Bug introduced by
The method expects() does not exist on LoginCidadao\OAuthBundle...y\AccessTokenRepository. Since you implemented __call, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

35
        $accessTokenRepo->/** @scrutinizer ignore-call */ 
36
                          expects($this->once())
Loading history...
36
            ->method('findOneBy')->with(['token' => $accessTokenToken])
37
            ->willReturn($accessToken);
38
39
        $token = $this->getMock('FOS\OAuthServerBundle\Security\Authentication\Token\OAuthToken');
40
        $token->expects($this->exactly(2))
41
            ->method('getToken')->willReturn($accessTokenToken);
42
43
        /** @var TokenStorageInterface|\PHPUnit_Framework_MockObject_MockObject $tokenStorage */
44
        $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
45
        $tokenStorage->expects($this->once())->method('getToken')->willReturn($token);
46
47
        $auditConfig = new AuditConfiguration();
48
49
        /** @var GetResponseEvent|\PHPUnit_Framework_MockObject_MockObject $event */
50
        $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')
51
            ->disableOriginalConstructor()->getMock();
52
        $event->expects($this->once())
53
            ->method('getRequestType')->willReturn(HttpKernelInterface::MASTER_REQUEST);
54
55
        $listener = new LoggedInUserListener($accessTokenRepo, $tokenStorage, $auditConfig);
56
        $listener->onKernelRequest($event);
57
    }
58
59
    public function testOnKernelRequestNotMaster()
60
    {
61
        /** @var AccessTokenRepository|\PHPUnit_Framework_MockObject_MockObject $accessTokenRepo */
62
        $accessTokenRepo = $this->getMockBuilder('LoginCidadao\OAuthBundle\Entity\AccessTokenRepository')
63
            ->disableOriginalConstructor()->getMock();
64
65
        /** @var TokenStorageInterface|\PHPUnit_Framework_MockObject_MockObject $tokenStorage */
66
        $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
67
        $tokenStorage->expects($this->never())->method('getToken');
68
69
        $auditConfig = new AuditConfiguration();
70
71
        /** @var GetResponseEvent|\PHPUnit_Framework_MockObject_MockObject $event */
72
        $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')
73
            ->disableOriginalConstructor()->getMock();
74
        $event->expects($this->once())
75
            ->method('getRequestType')->willReturn(HttpKernelInterface::SUB_REQUEST);
76
77
        $listener = new LoggedInUserListener($accessTokenRepo, $tokenStorage, $auditConfig);
78
        $listener->onKernelRequest($event);
79
    }
80
81
    public function testOnKernelRequestNotOAuthToken()
82
    {
83
        /** @var AccessTokenRepository|\PHPUnit_Framework_MockObject_MockObject $accessTokenRepo */
84
        $accessTokenRepo = $this->getMockBuilder('LoginCidadao\OAuthBundle\Entity\AccessTokenRepository')
85
            ->disableOriginalConstructor()->getMock();
86
87
        $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
88
89
        /** @var TokenStorageInterface|\PHPUnit_Framework_MockObject_MockObject $tokenStorage */
90
        $tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
91
        $tokenStorage->expects($this->once())->method('getToken')->willReturn($token);
92
93
        $auditConfig = new AuditConfiguration();
94
95
        /** @var GetResponseEvent|\PHPUnit_Framework_MockObject_MockObject $event */
96
        $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent')
97
            ->disableOriginalConstructor()->getMock();
98
        $event->expects($this->once())
99
            ->method('getRequestType')->willReturn(HttpKernelInterface::MASTER_REQUEST);
100
101
        $listener = new LoggedInUserListener($accessTokenRepo, $tokenStorage, $auditConfig);
102
        $listener->onKernelRequest($event);
103
    }
104
}
105