1<?php
2
3namespace Drupal\Tests\media\Functional;
4
5use Drupal\field\Entity\FieldConfig;
6
7/**
8 * Tests the file media source.
9 *
10 * @group media
11 */
12class MediaSourceFileTest extends MediaFunctionalTestBase {
13
14  /**
15   * {@inheritdoc}
16   */
17  protected $defaultTheme = 'stark';
18
19  /**
20   * Test that it's possible to change the allowed file extensions.
21   */
22  public function testSourceFieldSettingsEditing() {
23    $session = $this->getSession();
24    $page = $session->getPage();
25    $assert_session = $this->assertSession();
26
27    $media_type = $this->createMediaType('file');
28    $media_type_id = $media_type->id();
29    $this->assertSame('txt doc docx pdf', FieldConfig::load("media.$media_type_id.field_media_file")->get('settings')['file_extensions']);
30
31    $this->drupalGet("admin/structure/media/manage/$media_type_id/fields/media.$media_type_id.field_media_file");
32
33    // File extension field exists.
34    $assert_session->fieldExists('Allowed file extensions');
35
36    // Add another extension.
37    $page->fillField('settings[file_extensions]', 'txt, doc, docx, pdf, odt');
38
39    $page->pressButton('Save settings');
40    $this->drupalGet("admin/structure/media/manage/$media_type_id/fields/media.$media_type_id.field_media_file");
41
42    // Verify that new extension is present.
43    $assert_session->fieldValueEquals('settings[file_extensions]', 'txt, doc, docx, pdf, odt');
44    $this->assertSame('txt doc docx pdf odt', FieldConfig::load("media.$media_type_id.field_media_file")->get('settings')['file_extensions']);
45  }
46
47  /**
48   * Ensure source field deletion is not possible.
49   */
50  public function testPreventSourceFieldDeletion() {
51    $media_type = $this->createMediaType('file');
52    $media_type_id = $media_type->id();
53
54    $this->drupalGet("admin/structure/media/manage/$media_type_id/fields/media.$media_type_id.field_media_file/delete");
55    $this->assertSession()->statusCodeEquals(403);
56  }
57
58}
59