function PageCacheTest::testNoUrlNormalization

Same name and namespace in other branches
  1. 9 core/modules/page_cache/tests/src/Functional/PageCacheTest.php \Drupal\Tests\page_cache\Functional\PageCacheTest::testNoUrlNormalization()
  2. 8.9.x core/modules/page_cache/tests/src/Functional/PageCacheTest.php \Drupal\Tests\page_cache\Functional\PageCacheTest::testNoUrlNormalization()
  3. 11.x core/modules/page_cache/tests/src/Functional/PageCacheTest.php \Drupal\Tests\page_cache\Functional\PageCacheTest::testNoUrlNormalization()

Tests that URLs are cached in a not normalized form.

1 call to PageCacheTest::testNoUrlNormalization()
PageCacheTest::testPageCache in core/modules/page_cache/tests/src/Functional/PageCacheTest.php
Tests page caching.

File

core/modules/page_cache/tests/src/Functional/PageCacheTest.php, line 601

Class

PageCacheTest
Enables the page cache and tests it with various HTTP requests.

Namespace

Drupal\Tests\page_cache\Functional

Code

protected function testNoUrlNormalization() : void {
  // Use absolute URLs to avoid any processing.
  $url = Url::fromRoute('<front>')->setAbsolute()
    ->toString();
  // In each test, the first array value is raw URL, the second one is the
  // possible normalized URL.
  $tests = [
    [
      $url . '?z=z&a=a',
      $url . '?a=a&z=z',
    ],
    [
      $url . '?a=b+c',
      $url . '?a=b%20c',
    ],
  ];
  foreach ($tests as [
    $url_raw,
    $url_normalized,
  ]) {
    // Initialize cache on raw URL.
    $headers = $this->getHeaders($url_raw);
    $this->assertEquals('MISS', $headers['X-Drupal-Cache']);
    // Ensure cache was set.
    $headers = $this->getHeaders($url_raw);
    $this->assertEquals('HIT', $headers['X-Drupal-Cache'], "Cache was set for {$url_raw} URL.");
    // Check if the normalized URL is not cached.
    $headers = $this->getHeaders($url_normalized);
    $this->assertEquals('MISS', $headers['X-Drupal-Cache'], "Cache is missing for {$url_normalized} URL.");
  }
}

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