You are here

public static function UrlHelperTest::providerTestIsExternal in Drupal 10

Same name and namespace in other branches
  1. 8 core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php \Drupal\Tests\Component\Utility\UrlHelperTest::providerTestIsExternal()
  2. 9 core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php \Drupal\Tests\Component\Utility\UrlHelperTest::providerTestIsExternal()

Provides data for self::testIsExternal().

Return value

array

File

core/tests/Drupal/Tests/Component/Utility/UrlHelperTest.php, line 403

Class

UrlHelperTest
@group Utility

Namespace

Drupal\Tests\Component\Utility

Code

public static function providerTestIsExternal() {
  return [
    [
      '/internal/path',
      FALSE,
    ],
    [
      'https://example.com/external/path',
      TRUE,
    ],
    [
      'javascript://fake-external-path',
      FALSE,
    ],
    // External URL without an explicit protocol.
    [
      '//www.drupal.org/foo/bar?foo=bar&bar=baz&baz#foo',
      TRUE,
    ],
    // Internal URL starting with a slash.
    [
      '/www.drupal.org',
      FALSE,
    ],
    // Simple external URLs.
    [
      'http://example.com',
      TRUE,
    ],
    [
      'https://example.com',
      TRUE,
    ],
    [
      'http://drupal.org/foo/bar?foo=bar&bar=baz&baz#foo',
      TRUE,
    ],
    [
      '//drupal.org',
      TRUE,
    ],
    // Some browsers ignore or strip leading control characters.
    [
      "\0//www.example.com",
      TRUE,
    ],
    [
      "\10//www.example.com",
      TRUE,
    ],
    [
      "\37//www.example.com",
      TRUE,
    ],
    [
      "\n//www.example.com",
      TRUE,
    ],
    // JSON supports decoding directly from UTF-8 code points.
    [
      json_decode('"\\u00AD"') . "//www.example.com",
      TRUE,
    ],
    [
      json_decode('"\\u200E"') . "//www.example.com",
      TRUE,
    ],
    [
      json_decode('"\\uE0020"') . "//www.example.com",
      TRUE,
    ],
    [
      json_decode('"\\uE000"') . "//www.example.com",
      TRUE,
    ],
    // Backslashes should be normalized to forward.
    [
      '\\\\example.com',
      TRUE,
    ],
    // Local URLs.
    [
      'node',
      FALSE,
    ],
    [
      '/system/ajax',
      FALSE,
    ],
    [
      '?q=foo:bar',
      FALSE,
    ],
    [
      'node/edit:me',
      FALSE,
    ],
    [
      '/drupal.org',
      FALSE,
    ],
    [
      '<front>',
      FALSE,
    ],
  ];
}