Chris@0: set('system_test.module_hidden', FALSE); Chris@0: $this->createContentType(['type' => 'page']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests mixed case paths. Chris@0: */ Chris@0: public function testMixedCasePaths() { Chris@0: // Tests paths defined by routes from standard modules as anonymous. Chris@0: $this->drupalGet('user/login'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/Log in/'); Chris@0: $this->drupalGet('User/Login'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/Log in/'); Chris@0: Chris@0: // Tests paths defined by routes from the Views module. Chris@0: $admin = $this->drupalCreateUser(['access administration pages', 'administer nodes', 'access content overview']); Chris@0: $this->drupalLogin($admin); Chris@0: Chris@0: $this->drupalGet('admin/content'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/Content/'); Chris@0: $this->drupalGet('Admin/Content'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/Content/'); Chris@0: Chris@0: // Tests paths with query arguments. Chris@0: Chris@0: // Make sure our node title doesn't exist. Chris@0: $this->drupalGet('admin/content'); Chris@0: $this->assertSession()->linkNotExists('FooBarBaz'); Chris@0: $this->assertSession()->linkNotExists('foobarbaz'); Chris@0: Chris@0: // Create a node, and make sure it shows up on admin/content. Chris@0: $node = $this->createNode([ Chris@0: 'title' => 'FooBarBaz', Chris@0: 'type' => 'page', Chris@0: ]); Chris@0: Chris@0: $this->drupalGet('admin/content', [ Chris@0: 'query' => [ Chris@17: 'title' => 'FooBarBaz', Chris@17: ], Chris@0: ]); Chris@0: Chris@0: $this->assertSession()->linkExists('FooBarBaz'); Chris@0: $this->assertSession()->linkByHrefExists($node->toUrl()->toString()); Chris@0: Chris@0: // Make sure the path is case-insensitive, and query case is preserved. Chris@0: Chris@0: $this->drupalGet('Admin/Content', [ Chris@0: 'query' => [ Chris@17: 'title' => 'FooBarBaz', Chris@17: ], Chris@0: ]); Chris@0: Chris@0: $this->assertSession()->linkExists('FooBarBaz'); Chris@0: $this->assertSession()->linkByHrefExists($node->toUrl()->toString()); Chris@0: $this->assertSession()->fieldValueEquals('edit-title', 'FooBarBaz'); Chris@0: // Check that we can access the node with a mixed case path. Chris@0: $this->drupalGet('NOdE/' . $node->id()); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/FooBarBaz/'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests paths with slugs. Chris@0: */ Chris@0: public function testPathsWithArguments() { Chris@0: $this->drupalGet('system-test/echo/foobarbaz'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/foobarbaz/'); Chris@0: $this->assertSession()->pageTextNotMatches('/FooBarBaz/'); Chris@0: Chris@0: $this->drupalGet('system-test/echo/FooBarBaz'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/FooBarBaz/'); Chris@0: $this->assertSession()->pageTextNotMatches('/foobarbaz/'); Chris@0: Chris@0: // Test utf-8 characters in the route path. Chris@0: $this->drupalGet('/system-test/Ȅchȏ/meΦω/ABc123'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/ABc123/'); Chris@0: $this->drupalGet('/system-test/ȅchȎ/MEΦΩ/ABc123'); Chris@0: $this->assertSession()->statusCodeEquals(200); Chris@0: $this->assertSession()->pageTextMatches('/ABc123/'); Chris@0: } Chris@0: Chris@0: }