annotate core/tests/Drupal/FunctionalTests/Routing/PathEncodedTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\FunctionalTests\Routing;
Chris@0 4
Chris@0 5 use Drupal\Core\Url;
Chris@0 6 use Drupal\Tests\BrowserTestBase;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Tests url generation and routing for route paths with encoded characters.
Chris@0 10 *
Chris@0 11 * @group routing
Chris@0 12 */
Chris@0 13 class PathEncodedTest extends BrowserTestBase {
Chris@0 14
Chris@0 15 /**
Chris@0 16 * {@inheritdoc}
Chris@0 17 */
Chris@0 18 public static $modules = ['system', 'path_encoded_test'];
Chris@0 19
Chris@0 20 public function testGetEncoded() {
Chris@0 21 $route_paths = [
Chris@0 22 'path_encoded_test.colon' => '/hi/llamma:party',
Chris@0 23 'path_encoded_test.atsign' => '/bloggy/@Dries',
Chris@0 24 'path_encoded_test.parens' => '/cat(box)',
Chris@0 25 ];
Chris@0 26 foreach ($route_paths as $route_name => $path) {
Chris@0 27 $this->drupalGet(Url::fromRoute($route_name));
Chris@0 28 $this->assertSession()->pageTextContains('PathEncodedTestController works');
Chris@0 29 }
Chris@0 30 }
Chris@0 31
Chris@0 32 public function testAliasToEncoded() {
Chris@0 33 $route_paths = [
Chris@0 34 'path_encoded_test.colon' => '/hi/llamma:party',
Chris@0 35 'path_encoded_test.atsign' => '/bloggy/@Dries',
Chris@0 36 'path_encoded_test.parens' => '/cat(box)',
Chris@0 37 ];
Chris@0 38 /** @var \Drupal\Core\Path\AliasStorageInterface $alias_storage */
Chris@0 39 $alias_storage = $this->container->get('path.alias_storage');
Chris@0 40 $aliases = [];
Chris@0 41 foreach ($route_paths as $route_name => $path) {
Chris@0 42 $aliases[$route_name] = $this->randomMachineName();
Chris@0 43 $alias_storage->save($path, '/' . $aliases[$route_name]);
Chris@0 44 }
Chris@0 45 foreach ($route_paths as $route_name => $path) {
Chris@0 46 // The alias may be only a suffix of the generated path when the test is
Chris@0 47 // run with Drupal installed in a subdirectory.
Chris@0 48 $this->assertRegExp('@/' . rawurlencode($aliases[$route_name]) . '$@', Url::fromRoute($route_name)->toString());
Chris@0 49 $this->drupalGet(Url::fromRoute($route_name));
Chris@0 50 $this->assertSession()->pageTextContains('PathEncodedTestController works');
Chris@0 51 }
Chris@0 52 }
Chris@0 53
Chris@0 54 }