PathEncodedTest.php

Same filename in other branches
  1. 9 core/tests/Drupal/FunctionalTests/Routing/PathEncodedTest.php
  2. 8.9.x core/tests/Drupal/FunctionalTests/Routing/PathEncodedTest.php
  3. 10 core/tests/Drupal/FunctionalTests/Routing/PathEncodedTest.php

Namespace

Drupal\FunctionalTests\Routing

File

core/tests/Drupal/FunctionalTests/Routing/PathEncodedTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\FunctionalTests\Routing;

use Drupal\Core\Url;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\Traits\Core\PathAliasTestTrait;

/**
 * Tests URL generation and routing for route paths with encoded characters.
 *
 * @group path
 * @group routing
 */
class PathEncodedTest extends BrowserTestBase {
    use PathAliasTestTrait;
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'system',
        'path_encoded_test',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    public function testGetEncoded() : void {
        $route_paths = [
            'path_encoded_test.colon' => '/hi/llama:party',
            'path_encoded_test.at_sign' => '/blog/@Dries',
            'path_encoded_test.parentheses' => '/cat(box)',
        ];
        foreach ($route_paths as $route_name => $path) {
            $this->drupalGet(Url::fromRoute($route_name));
            $this->assertSession()
                ->pageTextContains('PathEncodedTestController works');
        }
    }
    public function testAliasToEncoded() : void {
        $route_paths = [
            'path_encoded_test.colon' => '/hi/llama:party',
            'path_encoded_test.at_sign' => '/blog/@Dries',
            'path_encoded_test.parentheses' => '/cat(box)',
        ];
        $aliases = [];
        foreach ($route_paths as $route_name => $path) {
            $aliases[$route_name] = $this->randomMachineName();
            $this->createPathAlias($path, '/' . $aliases[$route_name]);
        }
        foreach ($route_paths as $route_name => $path) {
            // The alias may be only a suffix of the generated path when the test is
            // run with Drupal installed in a subdirectory.
            $this->assertMatchesRegularExpression('@/' . rawurlencode($aliases[$route_name]) . '$@', Url::fromRoute($route_name)->toString());
            $this->drupalGet(Url::fromRoute($route_name));
            $this->assertSession()
                ->pageTextContains('PathEncodedTestController works');
        }
    }

}

Classes

Title Deprecated Summary
PathEncodedTest Tests URL generation and routing for route paths with encoded characters.

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