function MediaPreviewTest::testEmbedPreviewAccess

Same name and namespace in other branches
  1. 11.x core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaPreviewTest.php \Drupal\Tests\ckeditor5\FunctionalJavascript\MediaPreviewTest::testEmbedPreviewAccess()

Tests preview route access.

@dataProvider previewAccessProvider

Parameters

bool $media_embed_enabled: Whether to test with media_embed filter enabled on the text format.

bool $can_use_format: Whether the logged in user is allowed to use the text format.

File

core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaPreviewTest.php, line 147

Class

MediaPreviewTest
@coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Media[[api-linebreak]] @group ckeditor5 @group #slow @internal

Namespace

Drupal\Tests\ckeditor5\FunctionalJavascript

Code

public function testEmbedPreviewAccess($media_embed_enabled, $can_use_format) : void {
  // Reconfigure the host entity's text format to suit our needs.
  /** @var \Drupal\filter\FilterFormatInterface $format */
  $format = FilterFormat::load($this->host->body->format);
  $format->set('filters', [
    'filter_align' => [
      'status' => TRUE,
    ],
    'filter_caption' => [
      'status' => TRUE,
    ],
    'media_embed' => [
      'status' => $media_embed_enabled,
    ],
  ]);
  $format->save();
  $permissions = [
    'bypass node access',
  ];
  if ($can_use_format) {
    $permissions[] = $format->getPermissionName();
  }
  $this->drupalLogin($this->drupalCreateUser($permissions));
  $this->drupalGet($this->host
    ->toUrl('edit-form'));
  $assert_session = $this->assertSession();
  if ($can_use_format) {
    $this->waitForEditor();
    if ($media_embed_enabled) {
      // The preview rendering, which in this test will use Starterkit theme's
      // media.html.twig template, will fail without the CSRF token/header.
      // @see ::testEmbeddedMediaPreviewWithCsrfToken()
      $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'article.media'));
    }
    else {
      // If the filter isn't enabled, there won't be an error, but the
      // preview shouldn't be rendered.
      $assert_session->elementNotExists('css', 'article.media');
    }
  }
  else {
    $assert_session->pageTextContains('This field has been disabled because you do not have sufficient permissions to edit it.');
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.