@@ -152,13 +152,28 @@ public function getUserChanges()
152
152
*/
153
153
public function testSetUserDoesNotSetAuthenticatedToFalseWhenUserDoesNotChange ($ user )
154
154
{
155
- $ token = new ConcreteToken (['ROLE_FOO ' ]);
155
+ $ token = new ConcreteToken ();
156
+ $ token ->setAuthenticated (true );
157
+ $ this ->assertTrue ($ token ->isAuthenticated ());
158
+
159
+ $ token ->setUser ($ user );
160
+ $ this ->assertTrue ($ token ->isAuthenticated ());
161
+
162
+ $ token ->setUser ($ user );
163
+ $ this ->assertTrue ($ token ->isAuthenticated ());
164
+ }
165
+
166
+ public function testIsUserChangedWhenSerializing ()
167
+ {
168
+ $ token = new ConcreteToken (['ROLE_ADMIN ' ]);
156
169
$ token ->setAuthenticated (true );
157
170
$ this ->assertTrue ($ token ->isAuthenticated ());
158
171
172
+ $ user = new SerializableUser ('wouter ' , ['ROLE_ADMIN ' ]);
159
173
$ token ->setUser ($ user );
160
174
$ this ->assertTrue ($ token ->isAuthenticated ());
161
175
176
+ $ token = unserialize (serialize ($ token ));
162
177
$ token ->setUser ($ user );
163
178
$ this ->assertTrue ($ token ->isAuthenticated ());
164
179
}
@@ -179,6 +194,56 @@ public function __toString(): string
179
194
}
180
195
}
181
196
197
+ class SerializableUser implements UserInterface, \Serializable
198
+ {
199
+ private $ roles ;
200
+ private $ name ;
201
+
202
+ public function __construct ($ name , array $ roles = [])
203
+ {
204
+ $ this ->name = $ name ;
205
+ $ this ->roles = $ roles ;
206
+ }
207
+
208
+ public function getUsername ()
209
+ {
210
+ return $ this ->name ;
211
+ }
212
+
213
+ public function getPassword ()
214
+ {
215
+ return '*** ' ;
216
+ }
217
+
218
+ public function getRoles ()
219
+ {
220
+ if (empty ($ this ->roles )) {
221
+ return ['ROLE_USER ' ];
222
+ }
223
+
224
+ return $ this ->roles ;
225
+ }
226
+
227
+ public function eraseCredentials ()
228
+ {
229
+ }
230
+
231
+ public function getSalt ()
232
+ {
233
+ return null ;
234
+ }
235
+
236
+ public function serialize ()
237
+ {
238
+ return serialize ($ this ->name );
239
+ }
240
+
241
+ public function unserialize ($ serialized )
242
+ {
243
+ $ this ->name = unserialize ($ serialized );
244
+ }
245
+ }
246
+
182
247
class ConcreteToken extends AbstractToken
183
248
{
184
249
private $ credentials = 'credentials_value ' ;
0 commit comments