Security update for Core, with self-updated composer
[yaffs-website] / web / core / tests / Drupal / Tests / Core / Cache / Context / HeadersCacheContextTest.php
diff --git a/web/core/tests/Drupal/Tests/Core/Cache/Context/HeadersCacheContextTest.php b/web/core/tests/Drupal/Tests/Core/Cache/Context/HeadersCacheContextTest.php
new file mode 100644 (file)
index 0000000..8f69e21
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\Tests\Core\Cache\Context;
+
+use Drupal\Core\Cache\Context\HeadersCacheContext;
+use Drupal\Tests\UnitTestCase;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\RequestStack;
+
+/**
+ * @coversDefaultClass \Drupal\Core\Cache\Context\HeadersCacheContext
+ * @group Cache
+ */
+class HeadersCacheContextTest extends UnitTestCase {
+
+  /**
+   * @covers ::getContext
+   *
+   * @dataProvider providerTestGetContext
+   */
+  public function testGetContext($headers, $header_name, $context) {
+    $request_stack = new RequestStack();
+    $request = Request::create('/', 'GET');
+    // Request defaults could change, so compare with default values instead of
+    // passed in context value.
+    $request->headers->replace($headers);
+    $request_stack->push($request);
+    $cache_context = new HeadersCacheContext($request_stack);
+    $this->assertSame($cache_context->getContext($header_name), $context);
+  }
+
+  /**
+   * Provides a list of headers and expected cache contexts.
+   */
+  public function providerTestGetContext() {
+    return [
+      [[], NULL, ''],
+      [[], 'foo', ''],
+      // Non-empty headers.
+      [['llama' => 'rocks', 'alpaca' => '', 'panda' => 'drools', 'z' => '0'], NULL, 'alpaca=&llama=rocks&panda=drools&z=0'],
+      [['llama' => 'rocks', 'alpaca' => '', 'panda' => 'drools', 'z' => '0'], 'llama', 'rocks'],
+      [['llama' => 'rocks', 'alpaca' => '', 'panda' => 'drools', 'z' => '0'], 'alpaca', '?valueless?'],
+      [['llama' => 'rocks', 'alpaca' => '', 'panda' => 'drools', 'z' => '0'], 'panda', 'drools'],
+      [['llama' => 'rocks', 'alpaca' => '', 'panda' => 'drools', 'z' => '0'], 'z', '0'],
+      [['llama' => 'rocks', 'alpaca' => '', 'panda' => 'drools', 'z' => '0'], 'chicken', ''],
+      // Header value could be an array.
+      [['z' => ['0', '1']], NULL, 'z=0,1'],
+      // Values are sorted to minimize cache variations.
+      [['z' => ['1', '0'], 'a' => []], NULL, 'a=&z=0,1'],
+      [['a' => [], 'z' => ['1', '0']], NULL, 'a=&z=0,1'],
+    ];
+  }
+
+}