Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / modules / contrib / redirect / tests / src / Unit / RedirectRequestSubscriberTest.php
index 6b161cf044219ade130e0390783f74359f9680d8..4982bdb6e09ebc2c5e653bf3a32b34d03ee75163 100644 (file)
@@ -23,13 +23,10 @@ class RedirectRequestSubscriberTest extends UnitTestCase {
 
   /**
    * @covers ::onKernelRequestCheckRedirect
+   * @dataProvider getRedirectData
    */
-  public function testRedirectLogicWithQueryRetaining() {
+  public function testRedirectLogicWithQueryRetaining($request_uri, $request_query, $redirect_uri, $redirect_query) {
 
-    // The request query.
-    $request_query = array('key' => 'val');
-    // The query defined by the redirect entity.
-    $redirect_query = array('dummy' => 'value');
     // The expected final query. This query must contain values defined
     // by the redirect entity and values from the accessed url.
     $final_query = $redirect_query + $request_query;
@@ -54,10 +51,10 @@ class RedirectRequestSubscriberTest extends UnitTestCase {
 
     $url->expects($this->once())
       ->method('toString')
-      ->willReturn('/test-path');
+      ->willReturn($redirect_uri);
 
     $redirect = $this->getRedirectStub($url);
-    $event = $this->callOnKernelRequestCheckRedirect($redirect, $request_query, TRUE);
+    $event = $this->callOnKernelRequestCheckRedirect($redirect, $request_uri, $request_query, TRUE);
 
     $this->assertTrue($event->getResponse() instanceof RedirectResponse);
     $response = $event->getResponse();
@@ -68,11 +65,9 @@ class RedirectRequestSubscriberTest extends UnitTestCase {
 
   /**
    * @covers ::onKernelRequestCheckRedirect
+   * @dataProvider getRedirectData
    */
-  public function testRedirectLogicWithoutQueryRetaining() {
-
-    // The request query.
-    $request_query = array('key' => 'val');
+  public function testRedirectLogicWithoutQueryRetaining($request_uri, $request_query, $redirect_uri) {
 
     $url = $this->getMockBuilder('Drupal\Core\Url')
       ->disableOriginalConstructor()
@@ -91,23 +86,35 @@ class RedirectRequestSubscriberTest extends UnitTestCase {
 
     $url->expects($this->once())
       ->method('toString')
-      ->willReturn('/test-path');
+      ->willReturn($redirect_uri);
 
     $redirect = $this->getRedirectStub($url);
-    $event = $this->callOnKernelRequestCheckRedirect($redirect, $request_query, FALSE);
+    $event = $this->callOnKernelRequestCheckRedirect($redirect, $request_uri, $request_query, FALSE);
 
     $this->assertTrue($event->getResponse() instanceof RedirectResponse);
     $response = $event->getResponse();
-    $this->assertEquals('/test-path', $response->getTargetUrl());
+    $this->assertEquals($redirect_uri, $response->getTargetUrl());
     $this->assertEquals(301, $response->getStatusCode());
     $this->assertEquals(1, $response->headers->get('X-Redirect-ID'));
   }
 
+  /**
+   * Data provider for both tests.
+   */
+  public function getRedirectData() {
+    return [
+      ['non-existing', ['key' => 'val'], '/test-path', ['dummy' => 'value']],
+      ['non-existing/', ['key' => 'val'], '/test-path', ['dummy' => 'value']],
+    ];
+  }
+
   /**
    * Instantiates the subscriber and runs onKernelRequestCheckRedirect()
    *
    * @param $redirect
    *   The redirect entity.
+   * @param $request_uri
+   *   The URI of the request.
    * @param array $request_query
    *   The query that is supposed to come via request.
    * @param bool $retain_query
@@ -116,9 +123,9 @@ class RedirectRequestSubscriberTest extends UnitTestCase {
    * @return \Symfony\Component\HttpKernel\Event\GetResponseEvent
    *   THe response event.
    */
-  protected function callOnKernelRequestCheckRedirect($redirect, $request_query, $retain_query) {
+  protected function callOnKernelRequestCheckRedirect($redirect, $request_uri, $request_query, $retain_query) {
 
-    $event = $this->getGetResponseEventStub('non-existing', http_build_query($request_query));
+    $event = $this->getGetResponseEventStub($request_uri, http_build_query($request_query));
     $request = $event->getRequest();
 
     $checker = $this->getMockBuilder('Drupal\redirect\RedirectChecker')