summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorAlex Pott <alex.a.pott@googlemail.com>2025-04-26 11:21:30 +0100
committerAlex Pott <alex.a.pott@googlemail.com>2025-04-26 11:21:30 +0100
commit7da6cdbf80052c4cc725c5759d70159aea0e484d (patch)
tree9a3f4720e9030bbce4aff223d4094c1f473e4242
parenta31529786b6ba22e06e0999ae03f791d7ce43091 (diff)
downloaddrupal-7da6cdbf80052c4cc725c5759d70159aea0e484d.tar.gz
drupal-7da6cdbf80052c4cc725c5759d70159aea0e484d.zip
Issue #3519804 by mondrake, kim.pepper, alexpott: DummyMimeTypeMapLoadedSubscriber does not get registered
-rw-r--r--core/modules/file/tests/file_test/file_test.services.yml3
-rw-r--r--core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserLegacyTest.php136
-rw-r--r--core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserTest.php68
3 files changed, 142 insertions, 65 deletions
diff --git a/core/modules/file/tests/file_test/file_test.services.yml b/core/modules/file/tests/file_test/file_test.services.yml
index 095f9e42c0c..5408a295c7b 100644
--- a/core/modules/file/tests/file_test/file_test.services.yml
+++ b/core/modules/file/tests/file_test/file_test.services.yml
@@ -1,4 +1,6 @@
services:
+ _defaults:
+ autoconfigure: true
stream_wrapper.dummy_readonly:
class: Drupal\file_test\StreamWrapper\DummyReadOnlyStreamWrapper
tags:
@@ -22,4 +24,3 @@ services:
- { name: stream_wrapper, scheme: dummy2 }
Drupal\file_test\EventSubscriber\DummyMimeTypeMapLoadedSubscriber:
autowire: true
- public: false
diff --git a/core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserLegacyTest.php b/core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserLegacyTest.php
new file mode 100644
index 00000000000..8cb96454408
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserLegacyTest.php
@@ -0,0 +1,136 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\KernelTests\Core\File\MimeType;
+
+use Drupal\KernelTests\KernelTestBase;
+
+// cspell:ignore garply tarz
+
+/**
+ * Tests filename mimetype detection.
+ *
+ * Installing the 'file_deprecated_test' module allows the legacy hook
+ * file_deprecated_test_file_mimetype_mapping_alter to execute and add some
+ * mappings. We check here that they are.
+ *
+ * @group File
+ * @group legacy
+ * @coversDefaultClass \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
+ */
+class ExtensionMimeTypeGuesserLegacyTest extends KernelTestBase {
+
+ /**
+ * {@inheritdoc}
+ */
+ protected static $modules = ['file_deprecated_test', 'file_test'];
+
+ /**
+ * Tests mapping of mimetypes from filenames.
+ *
+ * @covers ::guessMimeType
+ */
+ public function testGuessMimeType(): void {
+ $prefixes = ['public://', 'private://', 'temporary://', 'dummy-remote://'];
+
+ $test_case = [
+ 'test.jar' => 'application/java-archive',
+ 'test.jpeg' => 'image/jpeg',
+ 'test.JPEG' => 'image/jpeg',
+ 'test.jpg' => 'image/jpeg',
+ 'test.jar.jpg' => 'image/jpeg',
+ 'test.jpg.jar' => 'application/java-archive',
+ 'test.pcf.Z' => 'application/x-font',
+ 'test.garply.waldo' => 'application/x-garply-waldo',
+ 'pcf.z' => 'application/x-compress',
+ 'jar' => NULL,
+ 'garply.waldo' => NULL,
+ 'some.junk' => NULL,
+ // Mime type added by file_test_mimetype_alter()
+ 'foo.file_test_1' => 'made_up/file_test_1',
+ 'foo.file_test_2' => 'made_up/file_test_2',
+ 'foo.doc' => 'made_up/doc',
+ 'test.ogg' => 'audio/ogg',
+ 'foobar.z' => 'application/x-compress',
+ 'foobar.tar' => 'application/x-tar',
+ 'foobar.tar.z' => 'application/x-tarz',
+ 'foobar.0.zip' => 'application/zip',
+ 'foobar..zip' => 'application/zip',
+ ];
+
+ $this->expectDeprecation(
+ 'The deprecated alter hook hook_file_mimetype_mapping_alter() is implemented in these locations: file_deprecated_test_file_mimetype_mapping_alter. This hook is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Implement a \Drupal\Core\File\Event\MimeTypeMapLoadedEvent listener instead. See https://www.drupal.org/node/3494040'
+ );
+
+ /** @var \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser $guesser */
+ $guesser = \Drupal::service('file.mime_type.guesser.extension');
+ // Test using default mappings.
+ foreach ($test_case as $input => $expected) {
+ // Test stream [URI].
+ foreach ($prefixes as $prefix) {
+ $output = $guesser->guessMimeType($prefix . $input);
+ $this->assertSame($expected, $output);
+ }
+
+ // Test normal path equivalent.
+ $output = $guesser->guessMimeType($input);
+ $this->assertSame($expected, $output);
+ }
+ }
+
+ /**
+ * Tests mapping of mimetypes from filenames.
+ *
+ * @covers ::guessMimeType
+ * @covers ::setMapping
+ */
+ public function testFileMimeTypeDetectionCustomMapping(): void {
+ /** @var \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser $extension_guesser */
+ $extension_guesser = \Drupal::service('file.mime_type.guesser.extension');
+
+ // Pass in a custom mapping.
+ $mapping = [
+ 'mimetypes' => [
+ 0 => 'application/java-archive',
+ 1 => 'image/jpeg',
+ ],
+ 'extensions' => [
+ 'jar' => 0,
+ 'jpg' => 1,
+ ],
+ ];
+
+ $this->expectDeprecation(
+ 'Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser::setMapping() is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use \Drupal\Core\File\MimeType\MimeTypeMapInterface::addMapping() instead or define your own MimeTypeMapInterface implementation. See https://www.drupal.org/node/3494040'
+ );
+ $extension_guesser->setMapping($mapping);
+
+ $test_case = [
+ 'test.jar' => 'application/java-archive',
+ 'test.jpeg' => 'image/jpeg',
+ 'test.jpg' => 'image/jpeg',
+ 'test.jar.jpg' => 'image/jpeg',
+ 'test.jpg.jar' => 'application/java-archive',
+ 'test.pcf.z' => 'application/x-font',
+ 'test.garply.waldo' => 'application/x-garply-waldo',
+ 'pcf.z' => 'application/x-compress',
+ 'jar' => NULL,
+ 'garply.waldo' => NULL,
+ 'some.junk' => NULL,
+ 'foo.file_test_1' => 'made_up/file_test_1',
+ 'foo.file_test_2' => 'made_up/file_test_2',
+ 'foo.doc' => 'made_up/doc',
+ 'test.ogg' => 'audio/ogg',
+ 'foobar.z' => 'application/x-compress',
+ 'foobar.tar' => 'application/x-tar',
+ 'foobar.tar.z' => 'application/x-tarz',
+ ];
+
+ foreach ($test_case as $input => $expected) {
+ $output = $extension_guesser->guessMimeType($input);
+ $this->assertSame($expected, $output, 'Failed for extension ' . $input);
+ }
+ }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserTest.php b/core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserTest.php
index 9dbd3ef8e9a..3071d063e0c 100644
--- a/core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserTest.php
@@ -11,21 +11,20 @@ use Drupal\KernelTests\KernelTestBase;
/**
* Tests filename mimetype detection.
*
+ * Installing the 'file_test' module allows DummyMimeTypeMapLoadedSubscriber
+ * to execute and add some mappings. We check here that they are.
+ *
* @group File
- * @coversDefaultClass \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
*/
class ExtensionMimeTypeGuesserTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
- protected static $modules = ['file_deprecated_test', 'file_test'];
+ protected static $modules = ['file_test'];
/**
* Tests mapping of mimetypes from filenames.
- *
- * @covers ::guessMimeType
- * @group legacy
*/
public function testGuessMimeType(): void {
$prefixes = ['public://', 'private://', 'temporary://', 'dummy-remote://'];
@@ -55,10 +54,6 @@ class ExtensionMimeTypeGuesserTest extends KernelTestBase {
'foobar..zip' => 'application/zip',
];
- $this->expectDeprecation(
- 'The deprecated alter hook hook_file_mimetype_mapping_alter() is implemented in these locations: file_deprecated_test_file_mimetype_mapping_alter. This hook is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Implement a \Drupal\Core\File\Event\MimeTypeMapLoadedEvent listener instead. See https://www.drupal.org/node/3494040'
- );
-
/** @var \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser $guesser */
$guesser = \Drupal::service('file.mime_type.guesser.extension');
// Test using default mappings.
@@ -75,59 +70,4 @@ class ExtensionMimeTypeGuesserTest extends KernelTestBase {
}
}
- /**
- * Tests mapping of mimetypes from filenames.
- *
- * @group legacy
- * @covers ::guessMimeType
- * @covers ::setMapping
- */
- public function testFileMimeTypeDetectionCustomMapping(): void {
- /** @var \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser $extension_guesser */
- $extension_guesser = \Drupal::service('file.mime_type.guesser.extension');
-
- // Pass in a custom mapping.
- $mapping = [
- 'mimetypes' => [
- 0 => 'application/java-archive',
- 1 => 'image/jpeg',
- ],
- 'extensions' => [
- 'jar' => 0,
- 'jpg' => 1,
- ],
- ];
-
- $this->expectDeprecation(
- 'Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser::setMapping() is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. Use \Drupal\Core\File\MimeType\MimeTypeMapInterface::addMapping() instead or define your own MimeTypeMapInterface implementation. See https://www.drupal.org/node/3494040'
- );
- $extension_guesser->setMapping($mapping);
-
- $test_case = [
- 'test.jar' => 'application/java-archive',
- 'test.jpeg' => 'image/jpeg',
- 'test.jpg' => 'image/jpeg',
- 'test.jar.jpg' => 'image/jpeg',
- 'test.jpg.jar' => 'application/java-archive',
- 'test.pcf.z' => 'application/x-font',
- 'test.garply.waldo' => 'application/x-garply-waldo',
- 'pcf.z' => 'application/x-compress',
- 'jar' => NULL,
- 'garply.waldo' => NULL,
- 'some.junk' => NULL,
- 'foo.file_test_1' => 'made_up/file_test_1',
- 'foo.file_test_2' => 'made_up/file_test_2',
- 'foo.doc' => 'made_up/doc',
- 'test.ogg' => 'audio/ogg',
- 'foobar.z' => 'application/x-compress',
- 'foobar.tar' => 'application/x-tar',
- 'foobar.tar.z' => 'application/x-tarz',
- ];
-
- foreach ($test_case as $input => $expected) {
- $output = $extension_guesser->guessMimeType($input);
- $this->assertSame($expected, $output, 'Failed for extension ' . $input);
- }
- }
-
}