Completed
Push — ezp27996-repository_remember_m... ( 815998...2e1e8f )
by
unknown
26:40 queued 13:16
created

testAuthenticate()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 28
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 22
nc 1
nop 0
dl 0
loc 28
rs 8.8571
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * File containing the RememberMeRepositoryAuthenticationProviderTest class.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 */
9
namespace eZ\Publish\Core\MVC\Symfony\Security\Tests\Authentication;
10
11
use eZ\Publish\Core\MVC\Symfony\Security\Authentication\RememberMeRepositoryAuthenticationProvider;
12
use PHPUnit\Framework\TestCase;
13
14
class RememberMeRepositoryAuthenticationProviderTest extends TestCase
15
{
16
    /**
17
     * @var RememberMeRepositoryAuthenticationProvider
18
     */
19
    private $authProvider;
20
21
    /**
22
     * @var \PHPUnit_Framework_MockObject_MockObject|\eZ\Publish\API\Repository\Repository
23
     */
24
    private $repository;
25
26
    protected function setUp()
27
    {
28
        parent::setUp();
29
30
        $this->repository = $this->getMock('eZ\Publish\API\Repository\Repository');
31
        $this->authProvider = new RememberMeRepositoryAuthenticationProvider(
32
            $this->getMock('Symfony\Component\Security\Core\User\UserCheckerInterface'),
33
            'my secret',
34
            'my provider secret'
35
        );
36
        $this->authProvider->setRepository($this->repository);
37
    }
38
39
    public function testAuthenticateUnsupportedToken()
40
    {
41
        $anonymousToken = $this
42
            ->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\AnonymousToken')
43
            ->setConstructorArgs(['secret', $this->getMock('Symfony\Component\Security\Core\User\UserInterface')])
44
            ->getMock();
45
        $this->assertNull($this->authProvider->authenticate($anonymousToken));
46
    }
47
48
    public function testAuthenticateWrongProviderKey()
49
    {
50
        $user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface');
51
        $user
52
            ->expects($this->any())
53
            ->method('getRoles')
54
            ->will($this->returnValue([]));
55
56
        $rememberMeToken = $this
57
            ->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\RememberMeToken')
58
            ->setConstructorArgs([$user, 'wrong provider secret', 'my secret'])
59
            ->getMock();
60
        $rememberMeToken
61
            ->expects($this->any())
62
            ->method('getProviderKey')
63
            ->will($this->returnValue('wrong provider secret'));
64
65
        $this->assertNull($this->authProvider->authenticate($rememberMeToken));
66
    }
67
68
    public function testAuthenticate()
69
    {
70
        $this->repository
71
            ->expects($this->once())
72
            ->method('getPermissionResolver')
73
            ->will($this->returnValue($this->getPermissionResolverMock()));
74
75
        $this->getPermissionResolverMock()
76
            ->expects($this->once())
77
            ->method('setCurrentUserReference');
78
79
        $user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface');
80
        $user
81
            ->expects($this->any())
82
            ->method('getRoles')
83
            ->will($this->returnValue([]));
84
85
        $rememberMeToken = $this
86
            ->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\RememberMeToken')
87
            ->setConstructorArgs([$user, 'my provider secret', 'my secret'])
88
            ->getMock();
89
        $rememberMeToken
90
            ->expects($this->any())
91
            ->method('getProviderKey')
92
            ->will($this->returnValue('my provider secret'));
93
94
        $this->assertSame($rememberMeToken, $this->authProvider->authenticate($rememberMeToken));
95
    }
96
97
    /**
98
     * @return \eZ\Publish\Core\Repository\Permission\PermissionResolver|\PHPUnit_Framework_MockObject_MockObject
99
     */
100
    private function getPermissionResolverMock()
101
    {
102
        return $this
103
            ->getMockBuilder('eZ\Publish\Core\Repository\Permission\PermissionResolver')
104
            ->setMethods(null)
105
            ->setConstructorArgs(
106
                [
107
                    $this
108
                        ->getMockBuilder('eZ\Publish\Core\Repository\Helper\RoleDomainMapper')
109
                        ->disableOriginalConstructor()
110
                        ->getMock(),
111
                    $this
112
                        ->getMockBuilder('eZ\Publish\Core\Repository\Helper\LimitationService')
113
                        ->getMock(),
114
                    $this
115
                        ->getMockBuilder('eZ\Publish\SPI\Persistence\User\Handler')
116
                        ->getMock(),
117
                    $this
118
                        ->getMockBuilder('eZ\Publish\API\Repository\Values\User\UserReference')
119
                        ->getMock(),
120
                ]
121
            )
122
            ->getMock();
123
    }
124
}
125