function ExtensionMimeTypeGuesserLegacyTest::testGuessMimeType

Tests mapping of mimetypes from filenames.

@covers ::guessMimeType

File

core/tests/Drupal/KernelTests/Core/File/MimeType/ExtensionMimeTypeGuesserLegacyTest.php, line 34

Class

ExtensionMimeTypeGuesserLegacyTest
Tests filename mimetype detection.

Namespace

Drupal\KernelTests\Core\File\MimeType

Code

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);
  }
}

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