public function UpdateReportTest::testTemplatePreprocessUpdateFetchErrorMessageWithDblog in Drupal 10
Same name and namespace in other branches
- 9 core/modules/update/tests/src/Kernel/UpdateReportTest.php \Drupal\Tests\update\Kernel\UpdateReportTest::testTemplatePreprocessUpdateFetchErrorMessageWithDblog()
 
Tests the error message when failing to fetch data with dblog enabled.
See also
template_preprocess_update_fetch_error_message()
File
- core/
modules/ update/ tests/ src/ Kernel/ UpdateReportTest.php, line 89  
Class
- UpdateReportTest
 - Tests update report functionality.
 
Namespace
Drupal\Tests\update\KernelCode
public function testTemplatePreprocessUpdateFetchErrorMessageWithDblog() {
  \Drupal::moduleHandler()
    ->loadInclude('update', 'inc', 'update.report');
  $this
    ->enableModules([
    'dblog',
    'user',
  ]);
  $this
    ->installEntitySchema('user');
  // First, try as a normal user that can't access dblog.
  $this
    ->setUpCurrentUser();
  $build = [
    '#theme' => 'update_fetch_error_message',
  ];
  $this
    ->render($build);
  $this
    ->assertRaw('Failed to fetch available update data:<ul><li>See <a href="https://www.drupal.org/node/3170647">PHP OpenSSL requirements</a> in the Drupal.org handbook for possible reasons this could happen and what you can do to resolve them.</li><li>Check your local system logs for additional error messages.</li></ul>');
  $variables = [];
  template_preprocess_update_fetch_error_message($variables);
  $this
    ->assertArrayHasKey('error_message', $variables);
  $this
    ->assertEquals('Failed to fetch available update data:', $variables['error_message']['message']['#markup']);
  $this
    ->assertArrayHasKey('documentation_link', $variables['error_message']['items']['#items']);
  $this
    ->assertArrayHasKey('logs', $variables['error_message']['items']['#items']);
  $this
    ->assertArrayNotHasKey('dblog', $variables['error_message']['items']['#items']);
  // Now, try as an admin that can access dblog.
  $this
    ->setUpCurrentUser([], [
    'access content',
    'access site reports',
  ]);
  $this
    ->render($build);
  $this
    ->assertRaw('Failed to fetch available update data:<ul><li>See <a href="https://www.drupal.org/node/3170647">PHP OpenSSL requirements</a> in the Drupal.org handbook for possible reasons this could happen and what you can do to resolve them.</li><li>Check');
  $dblog_url = Url::fromRoute('dblog.overview', [], [
    'query' => [
      'type' => [
        'update',
      ],
    ],
  ]);
  $this
    ->assertRaw(Link::fromTextAndUrl('your local system logs', $dblog_url)
    ->toString());
  $this
    ->assertRaw(' for additional error messages.</li></ul>');
  $variables = [];
  template_preprocess_update_fetch_error_message($variables);
  $this
    ->assertArrayHasKey('error_message', $variables);
  $this
    ->assertEquals('Failed to fetch available update data:', $variables['error_message']['message']['#markup']);
  $this
    ->assertArrayHasKey('documentation_link', $variables['error_message']['items']['#items']);
  $this
    ->assertArrayNotHasKey('logs', $variables['error_message']['items']['#items']);
  $this
    ->assertArrayHasKey('dblog', $variables['error_message']['items']['#items']);
}