View source
<?php
namespace Drupal\toolbar\Tests;
use Drupal\Core\Cache\Cache;
use Drupal\Core\EventSubscriber\MainContentViewSubscriber;
use Drupal\simpletest\WebTestBase;
use Drupal\system\Tests\Cache\AssertPageCacheContextsAndTagsTrait;
class ToolbarCacheContextsTest extends WebTestBase {
use AssertPageCacheContextsAndTagsTrait;
public static $modules = [
'toolbar',
'test_page_test',
];
protected $adminUser;
protected $adminUser2;
protected $perms = [
'access toolbar',
'access administration pages',
'administer site configuration',
];
protected function setUp() {
parent::setUp();
$this->adminUser = $this
->drupalCreateUser($this->perms);
$this->adminUser2 = $this
->drupalCreateUser($this->perms);
}
public function testToolbarCacheContextsCaller() {
$this
->assertToolbarCacheContexts([
'user',
], 'Expected cache contexts found for default combination and permission to see toolbar.');
$this
->installExtraModules([
'toolbar_disable_user_toolbar',
]);
$this
->assertToolbarCacheContexts([
'user.permissions',
], 'Expected cache contexts found without user toolbar tab.');
$this
->installExtraModules([
'contextual',
]);
$this->adminUser2 = $this
->drupalCreateUser(array_merge($this->perms, [
'access contextual links',
]));
$this
->assertToolbarCacheContexts([
'user.permissions',
], 'Expected cache contexts found with contextual module enabled.');
\Drupal::service('module_installer')
->uninstall([
'contextual',
]);
$this
->installExtraModules([
'tour',
]);
$this->adminUser2 = $this
->drupalCreateUser(array_merge($this->perms, [
'access tour',
]));
$this
->assertToolbarCacheContexts([
'user.permissions',
], 'Expected cache contexts found with tour module enabled.');
\Drupal::service('module_installer')
->uninstall([
'tour',
]);
$this
->installExtraModules([
'shortcut',
]);
$this->adminUser2 = $this
->drupalCreateUser(array_merge($this->perms, [
'access shortcuts',
'administer shortcuts',
]));
$this
->assertToolbarCacheContexts([
'user',
], 'Expected cache contexts found with shortcut module enabled.');
}
protected function assertToolbarCacheContexts(array $cache_contexts, $message = NULL) {
$default_cache_contexts = [
'languages:language_interface',
'theme',
'url.query_args:' . MainContentViewSubscriber::WRAPPER_FORMAT,
];
$cache_contexts = Cache::mergeContexts($default_cache_contexts, $cache_contexts);
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('test-page');
$return = $this
->assertCacheContexts($cache_contexts);
$this
->drupalLogout();
$this
->drupalLogin($this->adminUser2);
$this
->drupalGet('test-page');
$return = $return && $this
->assertCacheContexts($cache_contexts);
if ($return) {
$this
->pass($message);
}
else {
$this
->fail($message);
}
return $return;
}
protected function installExtraModules(array $module_list) {
\Drupal::service('module_installer')
->install($module_list);
$this->container = \Drupal::getContainer();
$this->container
->get('router.builder')
->rebuildIfNeeded();
}
}