Mercurial > hg > cmmr2012-drupal-site
diff core/tests/Drupal/FunctionalTests/Routing/CaseInsensitivePathTest.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/tests/Drupal/FunctionalTests/Routing/CaseInsensitivePathTest.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,113 @@ +<?php + +namespace Drupal\FunctionalTests\Routing; + +use Drupal\Tests\BrowserTestBase; + +/** + * Tests incoming path case insensitivity. + * + * @group routing + */ +class CaseInsensitivePathTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + public static $modules = ['system', 'views', 'node', 'system_test']; + + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + \Drupal::state()->set('system_test.module_hidden', FALSE); + $this->createContentType(['type' => 'page']); + } + + /** + * Tests mixed case paths. + */ + public function testMixedCasePaths() { + // Tests paths defined by routes from standard modules as anonymous. + $this->drupalGet('user/login'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/Log in/'); + $this->drupalGet('User/Login'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/Log in/'); + + // Tests paths defined by routes from the Views module. + $admin = $this->drupalCreateUser(['access administration pages', 'administer nodes', 'access content overview']); + $this->drupalLogin($admin); + + $this->drupalGet('admin/content'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/Content/'); + $this->drupalGet('Admin/Content'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/Content/'); + + // Tests paths with query arguments. + + // Make sure our node title doesn't exist. + $this->drupalGet('admin/content'); + $this->assertSession()->linkNotExists('FooBarBaz'); + $this->assertSession()->linkNotExists('foobarbaz'); + + // Create a node, and make sure it shows up on admin/content. + $node = $this->createNode([ + 'title' => 'FooBarBaz', + 'type' => 'page', + ]); + + $this->drupalGet('admin/content', [ + 'query' => [ + 'title' => 'FooBarBaz' + ] + ]); + + $this->assertSession()->linkExists('FooBarBaz'); + $this->assertSession()->linkByHrefExists($node->toUrl()->toString()); + + // Make sure the path is case-insensitive, and query case is preserved. + + $this->drupalGet('Admin/Content', [ + 'query' => [ + 'title' => 'FooBarBaz' + ] + ]); + + $this->assertSession()->linkExists('FooBarBaz'); + $this->assertSession()->linkByHrefExists($node->toUrl()->toString()); + $this->assertSession()->fieldValueEquals('edit-title', 'FooBarBaz'); + // Check that we can access the node with a mixed case path. + $this->drupalGet('NOdE/' . $node->id()); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/FooBarBaz/'); + } + + /** + * Tests paths with slugs. + */ + public function testPathsWithArguments() { + $this->drupalGet('system-test/echo/foobarbaz'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/foobarbaz/'); + $this->assertSession()->pageTextNotMatches('/FooBarBaz/'); + + $this->drupalGet('system-test/echo/FooBarBaz'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/FooBarBaz/'); + $this->assertSession()->pageTextNotMatches('/foobarbaz/'); + + // Test utf-8 characters in the route path. + $this->drupalGet('/system-test/Ȅchȏ/meΦω/ABc123'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/ABc123/'); + $this->drupalGet('/system-test/ȅchȎ/MEΦΩ/ABc123'); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextMatches('/ABc123/'); + } + +}