15
15
use Symfony \Component \HttpFoundation \Request ;
16
16
use Symfony \Component \PasswordHasher \Hasher \PasswordHasherFactoryInterface ;
17
17
use Symfony \Component \PasswordHasher \PasswordHasherInterface ;
18
- use Symfony \Component \Security \Core \Authentication \Token \TokenInterface ;
19
18
use Symfony \Component \Security \Core \User \InMemoryUser ;
20
19
use Symfony \Component \Security \Core \User \PasswordAuthenticatedUserInterface ;
21
20
use Symfony \Component \Security \Core \User \PasswordUpgraderInterface ;
22
21
use Symfony \Component \Security \Core \User \UserInterface ;
23
22
use Symfony \Component \Security \Core \User \UserProviderInterface ;
24
- use Symfony \Component \Security \Http \Authenticator \AuthenticatorInterface ;
25
23
use Symfony \Component \Security \Http \Authenticator \Passport \Badge \PasswordUpgradeBadge ;
26
24
use Symfony \Component \Security \Http \Authenticator \Passport \Badge \UserBadge ;
27
25
use Symfony \Component \Security \Http \Authenticator \Passport \Passport ;
28
26
use Symfony \Component \Security \Http \Authenticator \Passport \SelfValidatingPassport ;
29
27
use Symfony \Component \Security \Http \Event \LoginSuccessEvent ;
30
28
use Symfony \Component \Security \Http \EventListener \PasswordMigratingListener ;
29
+ use Symfony \Component \Security \Http \Tests \Fixtures \DummyAuthenticator ;
30
+ use Symfony \Component \Security \Http \Tests \Fixtures \DummyToken ;
31
31
32
32
class PasswordMigratingListenerTest extends TestCase
33
33
{
@@ -57,18 +57,18 @@ public function testUnsupportedEvents($event)
57
57
$ this ->listener ->onLoginSuccess ($ event );
58
58
}
59
59
60
- public function provideUnsupportedEvents ()
60
+ public static function provideUnsupportedEvents ()
61
61
{
62
62
// no password upgrade badge
63
- yield [$ this -> createEvent (new SelfValidatingPassport (new UserBadge ('test ' , function () { return $ this ->createMock (UserInterface::class); })))];
63
+ yield [self :: createEvent (new SelfValidatingPassport (new UserBadge ('test ' , function () { return $ this ->createMock (UserInterface::class); })))];
64
64
65
65
// blank password
66
- yield [$ this -> createEvent (new SelfValidatingPassport (new UserBadge ('test ' , function () { return $ this -> createMock (TestPasswordAuthenticatedUser::class ); }), [new PasswordUpgradeBadge ('' , $ this -> createPasswordUpgrader ())]))];
66
+ yield [self :: createEvent (new SelfValidatingPassport (new UserBadge ('test ' , function () { return new DummyTestPasswordAuthenticatedUser ( ); }), [new PasswordUpgradeBadge ('' , self :: createPasswordUpgrader ())]))];
67
67
}
68
68
69
69
public function testUpgradeWithUpgrader ()
70
70
{
71
- $ passwordUpgrader = $ this ->createPasswordUpgrader ( );
71
+ $ passwordUpgrader = $ this ->getMockForAbstractClass (TestMigratingUserProvider::class );
72
72
$ passwordUpgrader ->expects ($ this ->once ())
73
73
->method ('upgradePassword ' )
74
74
->with ($ this ->user , 'new-hash ' )
@@ -105,14 +105,14 @@ public function testUserWithoutPassword()
105
105
$ this ->listener ->onLoginSuccess ($ event );
106
106
}
107
107
108
- private function createPasswordUpgrader ()
108
+ private static function createPasswordUpgrader ()
109
109
{
110
- return $ this -> getMockForAbstractClass (TestMigratingUserProvider::class );
110
+ return new DummyTestMigratingUserProvider ( );
111
111
}
112
112
113
- private function createEvent (Passport $ passport )
113
+ private static function createEvent (PassportInterface $ passport )
114
114
{
115
- return new LoginSuccessEvent ($ this -> createMock (AuthenticatorInterface::class ), $ passport , $ this -> createMock (TokenInterface::class ), new Request (), null , 'main ' );
115
+ return new LoginSuccessEvent (new DummyAuthenticator ( ), $ passport , new DummyToken ( ), new Request (), null , 'main ' );
116
116
}
117
117
}
118
118
@@ -123,9 +123,62 @@ abstract public function upgradePassword(PasswordAuthenticatedUserInterface $use
123
123
abstract public function loadUserByIdentifier (string $ identifier ): UserInterface ;
124
124
}
125
125
126
+ class DummyTestMigratingUserProvider extends TestMigratingUserProvider
127
+ {
128
+ public function upgradePassword (PasswordAuthenticatedUserInterface $ user , string $ newHashedPassword ): void
129
+ {
130
+ }
131
+
132
+ public function loadUserByIdentifier (string $ identifier ): UserInterface
133
+ {
134
+ }
135
+
136
+ public function refreshUser (UserInterface $ user )
137
+ {
138
+ }
139
+
140
+ public function supportsClass (string $ class )
141
+ {
142
+ }
143
+
144
+ public function loadUserByUsername (string $ username )
145
+ {
146
+ }
147
+ }
148
+
126
149
abstract class TestPasswordAuthenticatedUser implements UserInterface, PasswordAuthenticatedUserInterface
127
150
{
128
151
abstract public function getPassword (): ?string ;
129
152
130
153
abstract public function getSalt (): ?string ;
131
154
}
155
+
156
+ class DummyTestPasswordAuthenticatedUser extends TestPasswordAuthenticatedUser
157
+ {
158
+ public function getPassword (): ?string
159
+ {
160
+ return null ;
161
+ }
162
+
163
+ public function getSalt (): ?string
164
+ {
165
+ return null ;
166
+ }
167
+
168
+ public function getRoles (): array
169
+ {
170
+ return [];
171
+ }
172
+
173
+ public function eraseCredentials ()
174
+ {
175
+ }
176
+
177
+ public function getUsername ()
178
+ {
179
+ }
180
+
181
+ public function getUserIdentifier (): string
182
+ {
183
+ }
184
+ }
0 commit comments