Skip to content
Snippets Groups Projects
Unverified Commit fd664f78 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #2873732 by vijaycs85, GaëlG: Array to string conversion in...

Issue #2873732 by vijaycs85, GaëlG: Array to string conversion in CacheContextsManager::convertTokensToKeys() because of the 'cookies' cache context
parent b9a61af9
No related branches found
No related tags found
31 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!2074Issue #2707689: NodeForm::actions() checks for delete access on new entities,!1896Issue #2940605: Can only intentionally re-render an entity with references 20 times,!1459Issue #3087632: menu_name max length is too long,!1283Issue #2922435: "Add new comment" and "@count comments" links are not following accessibility good practices,!1255Issue #3238922: Refactor (if feasible) uses of the jQuery serialize function to use vanillaJS,!1254Issue #3238915: Refactor (if feasible) uses of the jQuery ready function to use VanillaJS,!1213Issue #3236497: Allow other modules to opt out of security release message from update_page_top,!1185Issue 318778: Rerolled patch.,!1162Issue #3100350: Unable to save '/' root path alias,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!1018Issue #2793343: Dialog drupalAutoButtons option should be respected on initial load,!1014Issue #3226806: Move filter implementations from filter.module to plugin classes,!957Added throwing of InvalidPluginDefinitionException from getDefinition().,!939Issue #2971209: Allow the MediaLibraryUiBuilder service to use an alternative view display,!878Issue #3221534: throw an exception when IDs passed to loadMultiple() are badly formed,!877Issue #2708101: Default value for link text is not saved,!873Issue #2875228: Site install not using batch API service,!872Draft: Issue #3221319: Race condition when creating menu links and editing content deletes menu links,!866Issue #2845319: The highlighting of the 'Home' menu-link does not respect query strings and fragment identifiers,!844Resolve #3036010 "Updaters",!8293023322 - Contextual Links Style Update,!712Issue #2909128: Autocomplete intermittent on Chrome Android,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!485Sets the autocomplete attribute for username/password input field on login form.,!449Issue #2784233: Allow multiple vocabularies in the taxonomy filter,!30Issue #3182188: Updates composer usage to point at ./vendor/bin/composer
......@@ -25,7 +25,12 @@ public static function getLabel() {
*/
public function getContext($cookie = NULL) {
if ($cookie === NULL) {
return $this->requestStack->getCurrentRequest()->cookies->all();
$cookies = $this->requestStack->getCurrentRequest()->cookies->all();
// Sort the cookies by names, to always set the same context if the cookies
// are the same but in a different order.
ksort($cookies);
// Use http_build_query() to get a short string from the cookies array.
return http_build_query($cookies);
}
else {
return $this->requestStack->getCurrentRequest()->cookies->get($cookie);
......
<?php
namespace Drupal\Tests\Core\Cache\Context;
use Drupal\Core\Cache\Context\CookiesCacheContext;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* @coversDefaultClass \Drupal\Core\Cache\Context\CookiesCacheContext
* @group Cache
*/
class CookieCacheContextTest extends UnitTestCase {
/**
* @covers ::getContext
*
* @dataProvider providerTestGetContext
*/
public function testGetContext($cookies, $cookie_name, $context) {
$request_stack = new RequestStack();
$request = Request::create('/', 'GET');
foreach ($cookies as $cookie => $value) {
$request->cookies->set($cookie, $value);
}
$request_stack->push($request);
$cache_context = new CookiesCacheContext($request_stack);
$this->assertSame($cache_context->getContext($cookie_name), $context);
}
/**
* Provides a list of cookies and expected cache contexts.
*/
public function providerTestGetContext() {
return [
[['foo' => 1, 'bar' => 2, 'baz' => 3], 'foo', 1],
// Context is ordered by cookie name.
[['foo' => 1, 'bar' => 2, 'baz' => 3], NULL, 'bar=2&baz=3&foo=1'],
];
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment