Skip to content

Commit 8fc53b1

Browse files
committed
[Security] Rename User to InMemoryUser
1 parent 58381b6 commit 8fc53b1

17 files changed

+435
-72
lines changed

Tests/Authentication/Provider/DaoAuthenticationProviderTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
use Symfony\Component\Security\Core\Exception\AuthenticationServiceException;
2222
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
2323
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
24+
use Symfony\Component\Security\Core\User\InMemoryUser;
2425
use Symfony\Component\Security\Core\User\PasswordUpgraderInterface;
25-
use Symfony\Component\Security\Core\User\User;
2626
use Symfony\Component\Security\Core\User\UserCheckerInterface;
2727
use Symfony\Component\Security\Core\User\UserInterface;
2828
use Symfony\Component\Security\Core\User\UserProviderInterface;
@@ -174,7 +174,7 @@ public function testCheckAuthenticationWhenCredentialsAre0()
174174

175175
$method->invoke(
176176
$provider,
177-
new User('username', 'password'),
177+
new InMemoryUser('username', 'password'),
178178
$token
179179
);
180180
}
@@ -198,7 +198,7 @@ public function testCheckAuthenticationWhenCredentialsAreNotValid()
198198
->willReturn('foo')
199199
;
200200

201-
$method->invoke($provider, new User('username', 'password'), $token);
201+
$method->invoke($provider, new InMemoryUser('username', 'password'), $token);
202202
}
203203

204204
public function testCheckAuthenticationDoesNotReauthenticateWhenPasswordHasChanged()
@@ -270,12 +270,12 @@ public function testCheckAuthentication()
270270
->willReturn('foo')
271271
;
272272

273-
$method->invoke($provider, new User('username', 'password'), $token);
273+
$method->invoke($provider, new InMemoryUser('username', 'password'), $token);
274274
}
275275

276276
public function testPasswordUpgrades()
277277
{
278-
$user = new User('user', 'pwd');
278+
$user = new InMemoryUser('user', 'pwd');
279279

280280
$hasher = $this->createMock(PasswordHasherInterface::class);
281281
$hasher->expects($this->once())

Tests/Authentication/Provider/LdapBindAuthenticationProviderTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
use Symfony\Component\Security\Core\Authentication\Provider\LdapBindAuthenticationProvider;
2121
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
2222
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
23-
use Symfony\Component\Security\Core\User\User;
23+
use Symfony\Component\Security\Core\User\InMemoryUser;
2424
use Symfony\Component\Security\Core\User\UserCheckerInterface;
2525
use Symfony\Component\Security\Core\User\UserProviderInterface;
2626

@@ -41,7 +41,7 @@ public function testEmptyPasswordShouldThrowAnException()
4141
$reflection = new \ReflectionMethod($provider, 'checkAuthentication');
4242
$reflection->setAccessible(true);
4343

44-
$reflection->invoke($provider, new User('foo', null), new UsernamePasswordToken('foo', '', 'key'));
44+
$reflection->invoke($provider, new InMemoryUser('foo', null), new UsernamePasswordToken('foo', '', 'key'));
4545
}
4646

4747
public function testNullPasswordShouldThrowAnException()
@@ -56,7 +56,7 @@ public function testNullPasswordShouldThrowAnException()
5656
$reflection = new \ReflectionMethod($provider, 'checkAuthentication');
5757
$reflection->setAccessible(true);
5858

59-
$reflection->invoke($provider, new User('foo', null), new UsernamePasswordToken('foo', null, 'key'));
59+
$reflection->invoke($provider, new InMemoryUser('foo', null), new UsernamePasswordToken('foo', null, 'key'));
6060
}
6161

6262
public function testBindFailureShouldThrowAnException()
@@ -76,7 +76,7 @@ public function testBindFailureShouldThrowAnException()
7676
$reflection = new \ReflectionMethod($provider, 'checkAuthentication');
7777
$reflection->setAccessible(true);
7878

79-
$reflection->invoke($provider, new User('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
79+
$reflection->invoke($provider, new InMemoryUser('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
8080
}
8181

8282
public function testRetrieveUser()
@@ -136,7 +136,7 @@ public function testQueryForDn()
136136
$reflection = new \ReflectionMethod($provider, 'checkAuthentication');
137137
$reflection->setAccessible(true);
138138

139-
$reflection->invoke($provider, new User('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
139+
$reflection->invoke($provider, new InMemoryUser('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
140140
}
141141

142142
public function testQueryWithUserForDn()
@@ -178,7 +178,7 @@ public function testQueryWithUserForDn()
178178
$reflection = new \ReflectionMethod($provider, 'checkAuthentication');
179179
$reflection->setAccessible(true);
180180

181-
$reflection->invoke($provider, new User('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
181+
$reflection->invoke($provider, new InMemoryUser('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
182182
}
183183

184184
public function testEmptyQueryResultShouldThrowAnException()
@@ -214,6 +214,6 @@ public function testEmptyQueryResultShouldThrowAnException()
214214
$reflection = new \ReflectionMethod($provider, 'checkAuthentication');
215215
$reflection->setAccessible(true);
216216

217-
$reflection->invoke($provider, new User('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
217+
$reflection->invoke($provider, new InMemoryUser('foo', null), new UsernamePasswordToken('foo', 'bar', 'key'));
218218
}
219219
}

Tests/Authentication/Provider/RememberMeAuthenticationProviderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
use Symfony\Component\Security\Core\Exception\BadCredentialsException;
2020
use Symfony\Component\Security\Core\Exception\DisabledException;
2121
use Symfony\Component\Security\Core\Exception\LogicException;
22-
use Symfony\Component\Security\Core\User\User;
22+
use Symfony\Component\Security\Core\User\InMemoryUser;
2323
use Symfony\Component\Security\Core\User\UserCheckerInterface;
2424
use Symfony\Component\Security\Core\User\UserInterface;
2525

@@ -59,7 +59,7 @@ public function testAuthenticateThrowsOnNonUserInterfaceInstance()
5959
$this->expectExceptionMessage('Method "Symfony\Component\Security\Core\Authentication\Token\RememberMeToken::getUser()" must return a "Symfony\Component\Security\Core\User\UserInterface" instance, "string" returned.');
6060

6161
$provider = $this->getProvider();
62-
$token = new RememberMeToken(new User('dummyuser', null), 'foo', 'test');
62+
$token = new RememberMeToken(new InMemoryUser('dummyuser', null), 'foo', 'test');
6363
$token->setUser('stringish-user');
6464
$provider->authenticate($token);
6565
}
Binary file not shown.

Tests/Authorization/ExpressionLanguageTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
use Symfony\Component\Security\Core\Authorization\ExpressionLanguage;
2424
use Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter;
2525
use Symfony\Component\Security\Core\Authorization\Voter\RoleVoter;
26-
use Symfony\Component\Security\Core\User\User;
26+
use Symfony\Component\Security\Core\User\InMemoryUser;
2727

2828
class ExpressionLanguageTest extends TestCase
2929
{
@@ -49,7 +49,7 @@ public function testIsAuthenticated($token, $expression, $result)
4949
public function provider()
5050
{
5151
$roles = ['ROLE_USER', 'ROLE_ADMIN'];
52-
$user = new User('username', 'password', $roles);
52+
$user = new InMemoryUser('username', 'password', $roles);
5353

5454
$noToken = null;
5555
$anonymousToken = new AnonymousToken('firewall', 'anon.');

Tests/SecurityTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
1919
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
2020
use Symfony\Component\Security\Core\Security;
21-
use Symfony\Component\Security\Core\User\User;
21+
use Symfony\Component\Security\Core\User\InMemoryUser;
2222

2323
class SecurityTest extends TestCase
2424
{
@@ -66,7 +66,7 @@ public function getUserTests()
6666

6767
yield [new StringishUser(), null];
6868

69-
$user = new User('nice_user', 'foo');
69+
$user = new InMemoryUser('nice_user', 'foo');
7070
yield [$user, $user];
7171
}
7272

Tests/User/ChainUserProviderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
1616
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
1717
use Symfony\Component\Security\Core\User\ChainUserProvider;
18+
use Symfony\Component\Security\Core\User\InMemoryUser;
1819
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
1920
use Symfony\Component\Security\Core\User\PasswordUpgraderInterface;
20-
use Symfony\Component\Security\Core\User\User;
2121
use Symfony\Component\Security\Core\User\UserInterface;
2222
use Symfony\Component\Security\Core\User\UserProviderInterface;
2323

@@ -250,7 +250,7 @@ public function testAcceptsTraversable()
250250

251251
public function testPasswordUpgrades()
252252
{
253-
$user = new User('user', 'pwd');
253+
$user = new InMemoryUser('user', 'pwd');
254254

255255
$provider1 = $this->getMockForAbstractClass(MigratingProvider::class);
256256
$provider1
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Security\Core\Tests\User;
13+
14+
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\Security\Core\Exception\DisabledException;
16+
use Symfony\Component\Security\Core\User\InMemoryUser;
17+
use Symfony\Component\Security\Core\User\InMemoryUserChecker;
18+
use Symfony\Component\Security\Core\User\UserInterface;
19+
20+
class InMemoryUserCheckerTest extends TestCase
21+
{
22+
public function testCheckPostAuthNotAdvancedUserInterface()
23+
{
24+
$checker = new InMemoryUserChecker();
25+
26+
$this->assertNull($checker->checkPostAuth($this->createMock(UserInterface::class)));
27+
}
28+
29+
public function testCheckPostAuthPass()
30+
{
31+
$checker = new InMemoryUserChecker();
32+
$this->assertNull($checker->checkPostAuth(new InMemoryUser('John', 'password')));
33+
}
34+
35+
public function testCheckPreAuthDisabled()
36+
{
37+
$this->expectException(DisabledException::class);
38+
$checker = new InMemoryUserChecker();
39+
$checker->checkPreAuth(new InMemoryUser('John', 'password', [], false));
40+
}
41+
}

Tests/User/InMemoryUserProviderTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,16 @@
1212
namespace Symfony\Component\Security\Core\Tests\User;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
1516
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
17+
use Symfony\Component\Security\Core\User\InMemoryUser;
1618
use Symfony\Component\Security\Core\User\InMemoryUserProvider;
1719
use Symfony\Component\Security\Core\User\User;
1820

1921
class InMemoryUserProviderTest extends TestCase
2022
{
23+
use ExpectDeprecationTrait;
24+
2125
public function testConstructor()
2226
{
2327
$provider = $this->createProvider();
@@ -29,6 +33,21 @@ public function testConstructor()
2933
}
3034

3135
public function testRefresh()
36+
{
37+
$user = new InMemoryUser('fabien', 'bar');
38+
39+
$provider = $this->createProvider();
40+
41+
$refreshedUser = $provider->refreshUser($user);
42+
$this->assertEquals('foo', $refreshedUser->getPassword());
43+
$this->assertEquals(['ROLE_USER'], $refreshedUser->getRoles());
44+
$this->assertFalse($refreshedUser->isEnabled());
45+
}
46+
47+
/**
48+
* @group legacy
49+
*/
50+
public function testRefreshWithLegacyUser()
3251
{
3352
$user = new User('fabien', 'bar');
3453

Tests/User/InMemoryUserTest.php

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Security\Core\Tests\User;
13+
14+
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\Security\Core\User\EquatableInterface;
16+
use Symfony\Component\Security\Core\User\InMemoryUser;
17+
use Symfony\Component\Security\Core\User\UserInterface;
18+
19+
class InMemoryUserTest extends TestCase
20+
{
21+
public function testConstructorException()
22+
{
23+
$this->expectException(\InvalidArgumentException::class);
24+
new InMemoryUser('', 'superpass');
25+
}
26+
27+
public function testGetRoles()
28+
{
29+
$user = new InMemoryUser('fabien', 'superpass');
30+
$this->assertEquals([], $user->getRoles());
31+
32+
$user = new InMemoryUser('fabien', 'superpass', ['ROLE_ADMIN']);
33+
$this->assertEquals(['ROLE_ADMIN'], $user->getRoles());
34+
}
35+
36+
public function testGetPassword()
37+
{
38+
$user = new InMemoryUser('fabien', 'superpass');
39+
$this->assertEquals('superpass', $user->getPassword());
40+
}
41+
42+
public function testGetUsername()
43+
{
44+
$user = new InMemoryUser('fabien', 'superpass');
45+
$this->assertEquals('fabien', $user->getUsername());
46+
}
47+
48+
public function testGetSalt()
49+
{
50+
$user = new InMemoryUser('fabien', 'superpass');
51+
$this->assertNull($user->getSalt());
52+
}
53+
54+
public function testIsEnabled()
55+
{
56+
$user = new InMemoryUser('mathilde', 'k');
57+
$this->assertTrue($user->isEnabled());
58+
59+
$user = new InMemoryUser('robin', 'superpass', [], false);
60+
$this->assertFalse($user->isEnabled());
61+
}
62+
63+
public function testEraseCredentials()
64+
{
65+
$user = new InMemoryUser('fabien', 'superpass');
66+
$user->eraseCredentials();
67+
$this->assertEquals('superpass', $user->getPassword());
68+
}
69+
70+
public function testToString()
71+
{
72+
$user = new InMemoryUser('fabien', 'superpass');
73+
$this->assertEquals('fabien', (string) $user);
74+
}
75+
76+
/**
77+
* @dataProvider isEqualToData
78+
*
79+
* @param bool $expectation
80+
* @param EquatableInterface|UserInterface $a
81+
* @param EquatableInterface|UserInterface $b
82+
*/
83+
public function testIsEqualTo($expectation, $a, $b)
84+
{
85+
$this->assertSame($expectation, $a->isEqualTo($b));
86+
$this->assertSame($expectation, $b->isEqualTo($a));
87+
}
88+
89+
public static function isEqualToData()
90+
{
91+
return [
92+
[true, new InMemoryUser('username', 'password'), new InMemoryUser('username', 'password')],
93+
[false, new InMemoryUser('username', 'password', ['ROLE']), new InMemoryUser('username', 'password')],
94+
[false, new InMemoryUser('username', 'password', ['ROLE']), new InMemoryUser('username', 'password', ['NO ROLE'])],
95+
[false, new InMemoryUser('diff', 'diff'), new InMemoryUser('username', 'password')],
96+
[false, new InMemoryUser('diff', 'diff', [], false), new InMemoryUser('username', 'password')],
97+
];
98+
}
99+
100+
public function testIsEqualToWithDifferentUser()
101+
{
102+
$user = new InMemoryUser('username', 'password');
103+
$this->assertFalse($user->isEqualTo($this->createMock(UserInterface::class)));
104+
}
105+
}

0 commit comments

Comments
 (0)