@@ -53,8 +53,8 @@ protected function setUp(): void
53
53
/**
54
54
* @dataProvider handleKernelRequestEventDataProvider
55
55
* @dataProvider handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider
56
+ * @dataProvider handleKernelRequestEventForSymfonyVersionEqualTo54DataProvider
56
57
* @dataProvider handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvider
57
- * @dataProvider handleKernelRequestEventForSymfonyVersionLowerThan60DataProvider
58
58
*/
59
59
public function testHandleKernelRequestEvent (RequestEvent $ requestEvent , ?ClientInterface $ client , ?TokenInterface $ token , ?UserDataBag $ expectedUser ): void
60
60
{
@@ -120,6 +120,27 @@ public function handleKernelRequestEventDataProvider(): \Generator
120
120
UserDataBag::createFromUserIpAddress ('127.0.0.1 ' ),
121
121
];
122
122
123
+ yield 'request.clientIp IS NULL ' => [
124
+ new RequestEvent (
125
+ $ this ->createMock (HttpKernelInterface::class),
126
+ new Request (),
127
+ HttpKernelInterface::MASTER_REQUEST
128
+ ),
129
+ $ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
130
+ null ,
131
+ new UserDataBag (),
132
+ ];
133
+ }
134
+
135
+ /**
136
+ * @return \Generator<mixed>
137
+ */
138
+ public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider (): \Generator
139
+ {
140
+ if (version_compare (Kernel::VERSION , '5.4.0 ' , '>= ' )) {
141
+ return ;
142
+ }
143
+
123
144
yield 'token.authenticated = FALSE ' => [
124
145
new RequestEvent (
125
146
$ this ->createMock (HttpKernelInterface::class),
@@ -142,37 +163,43 @@ public function handleKernelRequestEventDataProvider(): \Generator
142
163
UserDataBag::createFromUserIpAddress ('127.0.0.1 ' ),
143
164
];
144
165
145
- yield 'token.authenticated = TRUE && token.user INSTANCEOF UserInterface && getUserIdentifier() method EXISTS ' => [
166
+ yield 'token.authenticated = TRUE && token.user INSTANCEOF string ' => [
146
167
new RequestEvent (
147
168
$ this ->createMock (HttpKernelInterface::class),
148
169
new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
149
170
HttpKernelInterface::MASTER_REQUEST
150
171
),
151
172
$ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
152
- new AuthenticatedTokenStub (new UserWithIdentifierStub () ),
173
+ new AuthenticatedTokenStub (' foo_user ' ),
153
174
new UserDataBag (null , null , '127.0.0.1 ' , 'foo_user ' ),
154
175
];
155
176
156
- yield 'request.clientIp IS NULL ' => [
177
+ yield 'token.authenticated = TRUE && token.user INSTANCEOF UserInterface && getUserIdentifier() method DOES NOT EXISTS ' => [
157
178
new RequestEvent (
158
179
$ this ->createMock (HttpKernelInterface::class),
159
- new Request (),
180
+ new Request ([], [], [], [], [], [ ' REMOTE_ADDR ' => ' 127.0.0.1 ' ] ),
160
181
HttpKernelInterface::MASTER_REQUEST
161
182
),
162
183
$ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
163
- null ,
164
- new UserDataBag (),
184
+ new AuthenticatedTokenStub ( new UserWithoutIdentifierStub ()) ,
185
+ new UserDataBag (null , null , ' 127.0.0.1 ' , ' foo_user ' ),
165
186
];
166
- }
167
187
168
- /**
169
- * @return \Generator<mixed>
170
- */
171
- public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider (): \Generator
172
- {
173
- if (version_compare (Kernel::VERSION , '5.4.0 ' , '>= ' )) {
174
- return ;
175
- }
188
+ yield 'token.authenticated = TRUE && token.user INSTANCEOF object && __toString() method EXISTS ' => [
189
+ new RequestEvent (
190
+ $ this ->createMock (HttpKernelInterface::class),
191
+ new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
192
+ HttpKernelInterface::MASTER_REQUEST
193
+ ),
194
+ $ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
195
+ new AuthenticatedTokenStub (new class () implements \Stringable {
196
+ public function __toString (): string
197
+ {
198
+ return 'foo_user ' ;
199
+ }
200
+ }),
201
+ new UserDataBag (null , null , '127.0.0.1 ' , 'foo_user ' ),
202
+ ];
176
203
177
204
yield 'token.authenticated = TRUE && token INSTANCEOF SwitchUserToken ' => [
178
205
new RequestEvent (
@@ -199,12 +226,45 @@ public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider
199
226
/**
200
227
* @return \Generator<mixed>
201
228
*/
202
- public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvider (): \Generator
229
+ public function handleKernelRequestEventForSymfonyVersionEqualTo54DataProvider (): \Generator
203
230
{
204
- if (version_compare (Kernel::VERSION , '5.4.0 ' , '< ' )) {
231
+ if (version_compare (Kernel::VERSION , '5.4.0 ' , '!= ' )) {
205
232
return ;
206
233
}
207
234
235
+ yield 'token.authenticated = FALSE ' => [
236
+ new RequestEvent (
237
+ $ this ->createMock (HttpKernelInterface::class),
238
+ new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
239
+ HttpKernelInterface::MASTER_REQUEST
240
+ ),
241
+ $ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
242
+ new UnauthenticatedTokenStub (),
243
+ UserDataBag::createFromUserIpAddress ('127.0.0.1 ' ),
244
+ ];
245
+
246
+ yield 'token.authenticated = TRUE && token.user IS NULL ' => [
247
+ new RequestEvent (
248
+ $ this ->createMock (HttpKernelInterface::class),
249
+ new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
250
+ HttpKernelInterface::MASTER_REQUEST
251
+ ),
252
+ $ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
253
+ new AuthenticatedTokenStub (null ),
254
+ UserDataBag::createFromUserIpAddress ('127.0.0.1 ' ),
255
+ ];
256
+
257
+ yield 'token.authenticated = TRUE && token.user INSTANCEOF UserInterface && getUserIdentifier() method EXISTS ' => [
258
+ new RequestEvent (
259
+ $ this ->createMock (HttpKernelInterface::class),
260
+ new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
261
+ HttpKernelInterface::MASTER_REQUEST
262
+ ),
263
+ $ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
264
+ new AuthenticatedTokenStub (new UserWithIdentifierStub ()),
265
+ new UserDataBag (null , null , '127.0.0.1 ' , 'foo_user ' ),
266
+ ];
267
+
208
268
yield 'token.authenticated = TRUE && token INSTANCEOF SwitchUserToken ' => [
209
269
new RequestEvent (
210
270
$ this ->createMock (HttpKernelInterface::class),
@@ -229,48 +289,52 @@ public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvid
229
289
/**
230
290
* @return \Generator<mixed>
231
291
*/
232
- public function handleKernelRequestEventForSymfonyVersionLowerThan60DataProvider (): \Generator
292
+ public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvider (): \Generator
233
293
{
234
- if (version_compare (Kernel::VERSION , '6.0 .0 ' , '>= ' )) {
294
+ if (version_compare (Kernel::VERSION , '5.4 .0 ' , '< ' )) {
235
295
return ;
236
296
}
237
297
238
- yield 'token.authenticated = TRUE && token. user INSTANCEOF string ' => [
298
+ yield 'token.user IS NULL ' => [
239
299
new RequestEvent (
240
300
$ this ->createMock (HttpKernelInterface::class),
241
301
new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
242
302
HttpKernelInterface::MASTER_REQUEST
243
303
),
244
304
$ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
245
- new AuthenticatedTokenStub (' foo_user ' ),
246
- new UserDataBag ( null , null , '127.0.0.1 ' , ' foo_user ' ),
305
+ new AuthenticatedTokenStub (null ),
306
+ UserDataBag:: createFromUserIpAddress ( '127.0.0.1 ' ),
247
307
];
248
308
249
- yield 'token.authenticated = TRUE && token. user INSTANCEOF UserInterface && getUserIdentifier() method DOES NOT EXISTS ' => [
309
+ yield 'token.user INSTANCEOF UserInterface ' => [
250
310
new RequestEvent (
251
311
$ this ->createMock (HttpKernelInterface::class),
252
312
new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
253
313
HttpKernelInterface::MASTER_REQUEST
254
314
),
255
315
$ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
256
- new AuthenticatedTokenStub (new UserWithoutIdentifierStub ()),
316
+ new AuthenticatedTokenStub (new UserWithIdentifierStub ()),
257
317
new UserDataBag (null , null , '127.0.0.1 ' , 'foo_user ' ),
258
318
];
259
319
260
- yield 'token.authenticated = TRUE && token.user INSTANCEOF object && __toString() method EXISTS ' => [
320
+ yield 'token INSTANCEOF SwitchUserToken ' => [
261
321
new RequestEvent (
262
322
$ this ->createMock (HttpKernelInterface::class),
263
323
new Request ([], [], [], [], [], ['REMOTE_ADDR ' => '127.0.0.1 ' ]),
264
324
HttpKernelInterface::MASTER_REQUEST
265
325
),
266
326
$ this ->getMockedClientWithOptions (new Options (['send_default_pii ' => true ])),
267
- new AuthenticatedTokenStub (new class () implements \Stringable {
268
- public function __toString (): string
269
- {
270
- return 'foo_user ' ;
271
- }
272
- }),
273
- new UserDataBag (null , null , '127.0.0.1 ' , 'foo_user ' ),
327
+ new SwitchUserToken (
328
+ new UserWithIdentifierStub (),
329
+ 'main ' ,
330
+ ['ROLE_USER ' ],
331
+ new AuthenticatedTokenStub (new UserWithIdentifierStub ('foo_user_impersonator ' ))
332
+ ),
333
+ UserDataBag::createFromArray ([
334
+ 'ip_address ' => '127.0.0.1 ' ,
335
+ 'username ' => 'foo_user ' ,
336
+ 'impersonator_username ' => 'foo_user_impersonator ' ,
337
+ ]),
274
338
];
275
339
}
276
340
0 commit comments