You are here

public function ThemeTokenTest::testThemeToken in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/system/tests/src/Functional/Theme/ThemeTokenTest.php \Drupal\Tests\system\Functional\Theme\ThemeTokenTest::testThemeToken()
  2. 9 core/modules/system/tests/src/Functional/Theme/ThemeTokenTest.php \Drupal\Tests\system\Functional\Theme\ThemeTokenTest::testThemeToken()

Tests if the 'theme_token' key of 'ajaxPageState' is computed.

File

core/modules/system/tests/src/Functional/Theme/ThemeTokenTest.php, line 41

Class

ThemeTokenTest
Tests the generation of 'theme_token' key in Drupal settings.

Namespace

Drupal\Tests\system\Functional\Theme

Code

public function testThemeToken() {

  // Visit the block administrative page with default theme. We use that page
  // because 'misc/ajax.js' is loaded there and we can test the token
  // generation.
  $this
    ->drupalGet('admin/structure/block');
  $settings = $this
    ->getDrupalSettings();
  $this
    ->assertNull($settings['ajaxPageState']['theme_token']);

  // Install 'claro' and configure it as administrative theme.
  $this->container
    ->get('theme_installer')
    ->install([
    'claro',
  ]);
  $this
    ->config('system.theme')
    ->set('admin', 'claro')
    ->save();

  // Revisit the page. This time the page is displayed using the 'claro' theme
  // and that is different from the default theme ('classy').
  $this
    ->drupalGet('admin/structure/block');
  $settings = $this
    ->getDrupalSettings();
  $this
    ->assertNotNull($settings['ajaxPageState']['theme_token']);

  // The CSRF token is a 43 length string.
  $this
    ->assertIsString($settings['ajaxPageState']['theme_token']);
  $this
    ->assertEquals(43, strlen($settings['ajaxPageState']['theme_token']));
}