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