12
12
namespace Symfony \Component \HttpKernel \Tests \Controller ;
13
13
14
14
use PHPUnit \Framework \TestCase ;
15
+ use Symfony \Component \HttpFoundation \Session \Session ;
16
+ use Symfony \Component \HttpFoundation \Session \SessionInterface ;
17
+ use Symfony \Component \HttpFoundation \Session \Storage \MockArraySessionStorage ;
15
18
use Symfony \Component \HttpKernel \Controller \ArgumentResolver ;
16
- use Symfony \Component \HttpKernel \Controller \ArgumentResolver \DefaultValueResolver ;
17
19
use Symfony \Component \HttpKernel \Controller \ArgumentResolver \RequestAttributeValueResolver ;
18
- use Symfony \Component \HttpKernel \Controller \ArgumentResolver \RequestValueResolver ;
19
- use Symfony \Component \HttpKernel \Controller \ArgumentResolver \VariadicValueResolver ;
20
20
use Symfony \Component \HttpKernel \Controller \ArgumentValueResolverInterface ;
21
21
use Symfony \Component \HttpKernel \ControllerMetadata \ArgumentMetadataFactory ;
22
22
use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \ExtendingRequest ;
23
+ use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \ExtendingSession ;
23
24
use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \NullableController ;
24
25
use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \VariadicController ;
25
26
use Symfony \Component \HttpFoundation \Request ;
@@ -32,14 +33,8 @@ class ArgumentResolverTest extends TestCase
32
33
public static function setUpBeforeClass ()
33
34
{
34
35
$ factory = new ArgumentMetadataFactory ();
35
- $ argumentValueResolvers = array (
36
- new RequestAttributeValueResolver (),
37
- new RequestValueResolver (),
38
- new DefaultValueResolver (),
39
- new VariadicValueResolver (),
40
- );
41
36
42
- self ::$ resolver = new ArgumentResolver ($ factory, $ argumentValueResolvers );
37
+ self ::$ resolver = new ArgumentResolver ($ factory );
43
38
}
44
39
45
40
public function testDefaultState ()
@@ -241,6 +236,73 @@ public function testGetNullableArgumentsWithDefaults()
241
236
$ this ->assertEquals (array (null , null , 'value ' , 'mandatory ' ), self ::$ resolver ->getArguments ($ request , $ controller ));
242
237
}
243
238
239
+ public function testGetSessionArguments ()
240
+ {
241
+ $ session = new Session (new MockArraySessionStorage ());
242
+ $ request = Request::create ('/ ' );
243
+ $ request ->setSession ($ session );
244
+ $ controller = array ($ this , 'controllerWithSession ' );
245
+
246
+ $ this ->assertEquals (array ($ session ), self ::$ resolver ->getArguments ($ request , $ controller ));
247
+ }
248
+
249
+ public function testGetSessionArgumentsWithExtendedSession ()
250
+ {
251
+ $ session = new ExtendingSession (new MockArraySessionStorage ());
252
+ $ request = Request::create ('/ ' );
253
+ $ request ->setSession ($ session );
254
+ $ controller = array ($ this , 'controllerWithExtendingSession ' );
255
+
256
+ $ this ->assertEquals (array ($ session ), self ::$ resolver ->getArguments ($ request , $ controller ));
257
+ }
258
+
259
+ pub
EF5E
lic function testGetSessionArgumentsWithInterface ()
260
+ {
261
+ $ session = $ this ->getMockBuilder (SessionInterface::class)->getMock ();
262
+ $ request = Request::create ('/ ' );
263
+ $ request ->setSession ($ session );
264
+ $ controller = array ($ this , 'controllerWithSessionInterface ' );
265
+
266
+ $ this ->assertEquals (array ($ session ), self ::$ resolver ->getArguments ($ request , $ controller ));
267
+ }
268
+
269
+ /**
270
+ * @expectedException \RuntimeException
271
+ */
272
+ public function testGetSessionMissMatchWithInterface ()
273
+ {
274
+ $ session = $ this ->getMockBuilder (SessionInterface::class)->getMock ();
275
+ $ request = Request::create ('/ ' );
276
+ $ request ->setSession ($ session );
277
+ $ controller = array ($ this , 'controllerWithExtendingSession ' );
278
+
279
+ self ::$ resolver ->getArguments ($ request , $ controller );
280
+ }
281
+
282
+ /**
283
+ * @expectedException \RuntimeException
284
+ */
285
+ public function testGetSessionMissMatchWithImplementation ()
286
+ {
287
+ $ session = new Session (new MockArraySessionStorage ());
288
+ $ request = Request::create ('/ ' );
289
+ $ request ->setSession ($ session );
290
+ $ controller = array ($ this , 'controllerWithExtendingSession ' );
291
+
292
+ self ::$ resolver ->getArguments ($ request , $ controller );
293
+ }
294
+
295
+ /**
296
+ * @expectedException \RuntimeException
297
+ */
298
+ public function testGetSessionMissMatchOnNull ()
299
+ {
300
+ $ request = Request::create ('/ ' );
301
+ $ controller = array ($ this , 'controllerWithExtendingSession ' );
302
+
303
+ self ::$ resolver ->getArguments ($ request , $ controller );
304
+ }
305
+
244
306
public function __invoke ($ foo , $ bar = null )
245
307
{
246
308
}
@@ -268,6 +330,18 @@ protected function controllerWithRequest(Request $request)
268
330
protected function controllerWithExtendingRequest (ExtendingRequest $ request )
269
331
{
270
332
}
333
+
334
+ protected function controllerWithSession (Session $ session )
335
+ {
336
+ }
337
+
338
+ protected function controllerWithSessionInterface (SessionInterface $ session )
339
+ {
340
+ }
341
+
342
+ protected function controllerWithExtendingSession (ExtendingSession $ session )
343
+ {
344
+ }
271
345
}
272
346
273
347
function controller_function ($ foo , $ foobar )
0 commit comments