Completed
Push — ezp27996-repository_remember_m... ( acef47...210586 )
by
unknown
16:59 queued 02:11
created

testAuthenticateUnsupportedToken()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 6
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 8
rs 9.4285
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
    /**
69
     * @expectedException \Symfony\Component\Security\Core\Exception\BadCredentialsException
70
     */
71
    public function testAuthenticateWrongSecret()
72
    {
73
        $this->repository
74
            ->expects($this->once())
75
            ->method('getPermissionResolver')
76
            ->will($this->returnValue($this->getPermissionResolverMock()));
77
78
        $this->getPermissionResolverMock()
79
            ->expects($this->once())
80
            ->method('setCurrentUserReference');
81
82
        $user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface');
83
        $user
84
            ->expects($this->any())
85
            ->method('getRoles')
86
            ->will($this->returnValue([]));
87
88
        $rememberMeToken = $this
89
            ->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\RememberMeToken')
90
            ->setConstructorArgs([$user, 'my provider secret', 'the wrong secret'])
91
            ->getMock();
92
        $rememberMeToken
93
            ->expects($this->any())
94
            ->method('getProviderKey')
95
            ->will($this->returnValue('my provider secret'));
96
        $rememberMeToken
97
            ->expects($this->any())
98
            ->method('getSecret')
99
            ->will($this->returnValue('the wrong secret'));
100
    }
101
102
    public function testAuthenticate()
103
    {
104
        $this->repository
105
            ->expects($this->once())
106
            ->method('getPermissionResolver')
107
            ->will($this->returnValue($this->getPermissionResolverMock()));
108
109
        $this->getPermissionResolverMock()
110
            ->expects($this->once())
111
            ->method('setCurrentUserReference');
112
113
        $user = $this->getMock('Symfony\Component\Security\Core\User\UserInterface');
114
        $user
115
            ->expects($this->any())
116
            ->method('getRoles')
117
            ->will($this->returnValue([]));
118
119
        $rememberMeToken = $this
120
            ->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\RememberMeToken')
121
            ->setConstructorArgs([$user, 'my provider secret', 'my secret'])
122
            ->getMock();
123
        $rememberMeToken
124
            ->expects($this->any())
125
            ->method('getProviderKey')
126
            ->will($this->returnValue('my provider secret'));
127
        $rememberMeToken
128
            ->expects($this->any())
129
            ->method('getSecret')
130
            ->will($this->returnValue('my secret'));
131
        $rememberMeToken
132
            ->expects($this->any())
133
            ->method('getUser')
134
            ->will($this->returnValue($user));
135
136
        $this->assertSame($rememberMeToken, $this->authProvider->authenticate($rememberMeToken));
137
    }
138
139
    /**
140
     * @return \eZ\Publish\Core\Repository\Permission\PermissionResolver|\PHPUnit_Framework_MockObject_MockObject
141
     */
142
    private function getPermissionResolverMock()
143
    {
144
        return $this
145
            ->getMockBuilder('eZ\Publish\Core\Repository\Permission\PermissionResolver')
146
            ->setMethods(null)
147
            ->setConstructorArgs(
148
                [
149
                    $this
150
                        ->getMockBuilder('eZ\Publish\Core\Repository\Helper\RoleDomainMapper')
151
                        ->disableOriginalConstructor()
152
                        ->getMock(),
153
                    $this
154
                        ->getMockBuilder('eZ\Publish\Core\Repository\Helper\LimitationService')
155
                        ->getMock(),
156
                    $this
157
                        ->getMockBuilder('eZ\Publish\SPI\Persistence\User\Handler')
158
                        ->getMock(),
159
                    $this
160
                        ->getMockBuilder('eZ\Publish\API\Repository\Values\User\UserReference')
161
                        ->getMock(),
162
                ]
163
            )
164
            ->getMock();
165
    }
166
}
167