View source
<?php
namespace Drupal\Tests\media_library\FunctionalJavascript;
use Drupal\media\Entity\Media;
use Drupal\media_library\MediaLibraryState;
use Drupal\user\Entity\Role;
use Drupal\user\RoleInterface;
class WidgetAccessTest extends MediaLibraryTestBase {
protected $defaultTheme = 'stark';
public function testWidgetAccess() {
$assert_session = $this
->assertSession();
$session = $this
->getSession();
$this
->createMediaItems([
'type_one' => [
'Horse',
'Bear',
],
]);
$account = $this
->drupalCreateUser([
'create basic_page content',
]);
$this
->drupalLogin($account);
$unpublished_media = Media::create([
'name' => 'Mosquito',
'bundle' => 'type_one',
'field_media_test' => 'Mosquito',
'status' => FALSE,
]);
$unpublished_media
->save();
$this
->drupalGet('node/add/basic_page');
$session
->executeScript("jQuery('[data-media-library-widget-value=\"field_unlimited_media\"]').val('1,2,{$unpublished_media->id()}')");
$session
->executeScript("jQuery('[data-media-library-widget-update=\"field_unlimited_media\"]').trigger('mousedown')");
$this
->assertElementExistsAfterWait('css', '.js-media-library-item');
$assert_session
->pageTextContains('Horse');
$assert_session
->pageTextContains('Bear');
$assert_session
->pageTextNotContains('Mosquito');
$this
->drupalLogout();
$role = Role::load(RoleInterface::ANONYMOUS_ID);
$role
->revokePermission('view media');
$role
->save();
$allowed_types = [
'type_one',
'type_two',
'type_three',
'type_four',
];
$state = MediaLibraryState::create('media_library.opener.field_widget', $allowed_types, 'type_three', 2, [
'entity_type_id' => 'node',
'bundle' => 'basic_page',
'field_name' => 'field_unlimited_media',
]);
$url_options = [
'query' => $state
->all(),
];
$this
->drupalGet('admin/content/media-widget', $url_options);
$assert_session
->responseContains('Access denied');
$this
->drupalGet('admin/content/media-widget-table', $url_options);
$assert_session
->responseContains('Access denied');
$this
->drupalGet('media-library', $url_options);
$assert_session
->responseContains('Access denied');
$this
->grantPermissions($role, [
'create basic_page content',
'view media',
]);
$this
->drupalGet('admin/content/media-widget', $url_options);
$assert_session
->elementExists('css', '.js-media-library-view');
$this
->drupalGet('admin/content/media-widget-table', $url_options);
$assert_session
->elementExists('css', '.js-media-library-view');
$this
->drupalGet('media-library', $url_options);
$assert_session
->elementExists('css', '.js-media-library-view');
$assert_session
->fieldNotExists('files[upload][]');
$this
->drupalGet('admin/content/media-widget');
$assert_session
->responseContains('Access denied');
$this
->drupalGet('admin/content/media-widget-table');
$assert_session
->responseContains('Access denied');
$this
->drupalGet('media-library');
$assert_session
->responseContains('Access denied');
$this
->grantPermissions($role, [
'create media',
]);
$this
->drupalGet('media-library', $url_options);
$assert_session
->elementExists('css', '.js-media-library-view');
$assert_session
->fieldExists('Add files');
$this
->drupalGet('media-library', [
'query' => array_merge($url_options['query'], [
'media_library_opener_id' => 'fail',
]),
]);
$assert_session
->responseContains('Access denied');
$this
->drupalGet('media-library', [
'query' => array_merge($url_options['query'], [
'media_library_allowed_types' => [
'type_one',
'type_two',
],
]),
]);
$assert_session
->responseContains('Access denied');
$this
->drupalGet('media-library', [
'query' => array_merge($url_options['query'], [
'media_library_selected_type' => 'type_one',
]),
]);
$assert_session
->responseContains('Access denied');
$this
->drupalGet('media-library', [
'query' => array_merge($url_options['query'], [
'media_library_remaining' => 3,
]),
]);
$assert_session
->responseContains('Access denied');
$this
->drupalGet('media-library', [
'query' => array_merge($url_options['query'], [
'hash' => 'fail',
]),
]);
$assert_session
->responseContains('Access denied');
}
}