Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / http-kernel / Tests / Controller / ArgumentResolverTest.php
index 062ef5c64b49f1c70da04c9062bcef13f84804f4..0804139030128e179d5a2aad3a945dcefaef735c 100644 (file)
 namespace Symfony\Component\HttpKernel\Tests\Controller;
 
 use PHPUnit\Framework\TestCase;
+use Symfony\Component\HttpFoundation\Session\Session;
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
+use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
 use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver;
 use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver;
-use Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver;
 use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
 use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
 use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\ExtendingRequest;
+use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\ExtendingSession;
 use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\NullableController;
 use Symfony\Component\HttpKernel\Tests\Fixtures\Controller\VariadicController;
 use Symfony\Component\HttpFoundation\Request;
@@ -32,14 +33,8 @@ class ArgumentResolverTest extends TestCase
     public static function setUpBeforeClass()
     {
         $factory = new ArgumentMetadataFactory();
-        $argumentValueResolvers = array(
-            new RequestAttributeValueResolver(),
-            new RequestValueResolver(),
-            new DefaultValueResolver(),
-            new VariadicValueResolver(),
-        );
 
-        self::$resolver = new ArgumentResolver($factory, $argumentValueResolvers);
+        self::$resolver = new ArgumentResolver($factory);
     }
 
     public function testDefaultState()
@@ -241,6 +236,73 @@ class ArgumentResolverTest extends TestCase
         $this->assertEquals(array(null, null, 'value', 'mandatory'), self::$resolver->getArguments($request, $controller));
     }
 
+    public function testGetSessionArguments()
+    {
+        $session = new Session(new MockArraySessionStorage());
+        $request = Request::create('/');
+        $request->setSession($session);
+        $controller = array($this, 'controllerWithSession');
+
+        $this->assertEquals(array($session), self::$resolver->getArguments($request, $controller));
+    }
+
+    public function testGetSessionArgumentsWithExtendedSession()
+    {
+        $session = new ExtendingSession(new MockArraySessionStorage());
+        $request = Request::create('/');
+        $request->setSession($session);
+        $controller = array($this, 'controllerWithExtendingSession');
+
+        $this->assertEquals(array($session), self::$resolver->getArguments($request, $controller));
+    }
+
+    public function testGetSessionArgumentsWithInterface()
+    {
+        $session = $this->getMockBuilder(SessionInterface::class)->getMock();
+        $request = Request::create('/');
+        $request->setSession($session);
+        $controller = array($this, 'controllerWithSessionInterface');
+
+        $this->assertEquals(array($session), self::$resolver->getArguments($request, $controller));
+    }
+
+    /**
+     * @expectedException \RuntimeException
+     */
+    public function testGetSessionMissMatchWithInterface()
+    {
+        $session = $this->getMockBuilder(SessionInterface::class)->getMock();
+        $request = Request::create('/');
+        $request->setSession($session);
+        $controller = array($this, 'controllerWithExtendingSession');
+
+        self::$resolver->getArguments($request, $controller);
+    }
+
+    /**
+     * @expectedException \RuntimeException
+     */
+    public function testGetSessionMissMatchWithImplementation()
+    {
+        $session = new Session(new MockArraySessionStorage());
+        $request = Request::create('/');
+        $request->setSession($session);
+        $controller = array($this, 'controllerWithExtendingSession');
+
+        self::$resolver->getArguments($request, $controller);
+    }
+
+    /**
+     * @expectedException \RuntimeException
+     */
+    public function testGetSessionMissMatchOnNull()
+    {
+        $request = Request::create('/');
+        $controller = array($this, 'controllerWithExtendingSession');
+
+        self::$resolver->getArguments($request, $controller);
+    }
+
     public function __invoke($foo, $bar = null)
     {
     }
@@ -268,6 +330,18 @@ class ArgumentResolverTest extends TestCase
     protected function controllerWithExtendingRequest(ExtendingRequest $request)
     {
     }
+
+    protected function controllerWithSession(Session $session)
+    {
+    }
+
+    protected function controllerWithSessionInterface(SessionInterface $session)
+    {
+    }
+
+    protected function controllerWithExtendingSession(ExtendingSession $session)
+    {
+    }
 }
 
 function controller_function($foo, $foobar)