1212namespace Symfony \Component \HttpKernel \Tests \Controller ;
1313
1414use 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 ;
1518use Symfony \Component \HttpKernel \Controller \ArgumentResolver ;
16- use Symfony \Component \HttpKernel \Controller \ArgumentResolver \DefaultValueResolver ;
1719use Symfony \Component \HttpKernel \Controller \ArgumentResolver \RequestAttributeValueResolver ;
18- use Symfony \Component \HttpKernel \Controller \ArgumentResolver \RequestValueResolver ;
19- use Symfony \Component \HttpKernel \Controller \ArgumentResolver \VariadicValueResolver ;
2020use Symfony \Component \HttpKernel \Controller \ArgumentValueResolverInterface ;
2121use Symfony \Component \HttpKernel \ControllerMetadata \ArgumentMetadataFactory ;
2222use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \ExtendingRequest ;
23+ use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \ExtendingSession ;
2324use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \NullableController ;
2425use Symfony \Component \HttpKernel \Tests \Fixtures \Controller \VariadicController ;
2526use Symfony \Component \HttpFoundation \Request ;
@@ -32,14 +33,8 @@ class ArgumentResolverTest extends TestCase
3233 public static function setUpBeforeClass ()
3334 {
3435 $ factory = new ArgumentMetadataFactory ();
35- $ argumentValueResolvers = array (
36- new RequestAttributeValueResolver (),
37- new RequestValueResolver (),
38- new DefaultValueResolver (),
39- new VariadicValueResolver (),
40- );
4136
42- self ::$ resolver = new ArgumentResolver ($ factory, $ argumentValueResolvers );
37+ self ::$ resolver = new ArgumentResolver ($ factory );
4338 }
4439
4540 public function testDefaultState ()
@@ -241,6 +236,73 @@ public function testGetNullableArgumentsWithDefaults()
241236 $ this ->assertEquals (array (null , null , 'value ' , 'mandatory ' ), self ::$ resolver ->getArguments ($ request , $ controller ));
242237 }
243238
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+ public 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+
244306 public function __invoke ($ foo , $ bar = null )
245307 {
246308 }
@@ -268,6 +330,18 @@ protected function controllerWithRequest(Request $request)
268330 protected function controllerWithExtendingRequest (ExtendingRequest $ request )
269331 {
270332 }
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+ }
271345}
272346
273347function controller_function ($ foo , $ foobar )
0 commit comments