function UrlTest::testExternalUrls

Same name and namespace in other branches
  1. 9 core/modules/system/tests/src/Kernel/Common/UrlTest.php \Drupal\Tests\system\Kernel\Common\UrlTest::testExternalUrls()
  2. 10 core/modules/system/tests/src/Kernel/Common/UrlTest.php \Drupal\Tests\system\Kernel\Common\UrlTest::testExternalUrls()
  3. 11.x core/modules/system/tests/src/Kernel/Common/UrlTest.php \Drupal\Tests\system\Kernel\Common\UrlTest::testExternalUrls()

Tests external URL handling.

File

core/modules/system/tests/src/Functional/Common/UrlTest.php, line 296

Class

UrlTest
Confirm that <a href="/api/drupal/core%21lib%21Drupal%21Core%21Url.php/class/Url/8.9.x" title="Defines an object that holds information about a URL." class="local">\Drupal\Core\Url</a>, <a href="/api/drupal/core%21lib%21Drupal%21Component%21Utility%21UrlHelper.php/function/UrlHelper%3A%3AfilterQueryParameters/8.9.x" title="Filters a URL query parameter array to remove unwanted elements." class="local">\Drupal\Component\Utility\UrlHelper::filterQueryParameters</a>(), <a href="/api/drupal/core%21lib%21Drupal%21Component%21Utility%21UrlHelper.php/function/UrlHelper%3A%3AbuildQuery/8.9.x" title="Parses an array into a valid, rawurlencoded query string." class="local">\Drupal\Component\Utility\UrlHelper::buildQuery</a>(), and <a href="/api/drupal/core%21lib%21Drupal%21Core%21Utility%21LinkGeneratorInterface.php/function/LinkGeneratorInterface%3A%3Agenerate/8.9.x" title="Renders a link to a URL." class="local">\Drupal\Core\Utility\LinkGeneratorInterface::generate</a>() work correctly with various input.

Namespace

Drupal\Tests\system\Functional\Common

Code

public function testExternalUrls() {
    $test_url = 'https://www.drupal.org/';
    // Verify external URL can contain a fragment.
    $url = $test_url . '#drupal';
    $result = Url::fromUri($url)->toString();
    $this->assertEqual($url, $result, 'External URL with fragment works without a fragment in $options.');
    // Verify fragment can be overridden in an external URL.
    $url = $test_url . '#drupal';
    $fragment = $this->randomMachineName(10);
    $result = Url::fromUri($url, [
        'fragment' => $fragment,
    ])->toString();
    $this->assertEqual($test_url . '#' . $fragment, $result, 'External URL fragment is overridden with a custom fragment in $options.');
    // Verify external URL can contain a query string.
    $url = $test_url . '?drupal=awesome';
    $result = Url::fromUri($url)->toString();
    $this->assertEqual($url, $result);
    // Verify external URL can contain a query string with an integer key.
    $url = $test_url . '?120=1';
    $result = Url::fromUri($url)->toString();
    $this->assertEqual($url, $result);
    // Verify external URL can be extended with a query string.
    $url = $test_url;
    $query = [
        'awesome' => 'drupal',
    ];
    $result = Url::fromUri($url, [
        'query' => $query,
    ])->toString();
    $this->assertSame('https://www.drupal.org/?awesome=drupal', $result);
    // Verify query string can be extended in an external URL.
    $url = $test_url . '?drupal=awesome';
    $query = [
        'awesome' => 'drupal',
    ];
    $result = Url::fromUri($url, [
        'query' => $query,
    ])->toString();
    $this->assertEqual('https://www.drupal.org/?drupal=awesome&awesome=drupal', $result);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.