diff --git a/phpBB/phpbb/mimetype/guesser.php b/phpBB/phpbb/mimetype/guesser.php index c019cb5b07..8baa77089b 100644 --- a/phpBB/phpbb/mimetype/guesser.php +++ b/phpBB/phpbb/mimetype/guesser.php @@ -131,22 +131,22 @@ class guesser * Choose the best mime type based on the current mime type and the guess * If a guesser returns nulls or application/octet-stream, we will keep * the current guess. Guesses with a slash inside them will be favored over - * already existing without slashes. However, any guess that will pass the - * first check will always overwrite the default application/octet-stream. + * already existing ones. However, any guess that will pass the first check + * will always overwrite the default application/octet-stream. * * @param string $mime_type The current mime type * @param string $guess The current mime type guess * * @return string The best mime type based on current mime type and guess */ - protected function choose_mime_type($mime_type, $guess) + public function choose_mime_type($mime_type, $guess) { if ($guess === null || $guess == 'application/octet-stream') { return $mime_type; } - if ((strpos($mime_type, '/') === false || $mime_type == 'application/octet-stream') && strpos($guess, '/') !== false) + if ($mime_type == 'application/octet-stream' || strpos($guess, '/') !== false) { $mime_type = $guess; } diff --git a/tests/mimetype/guesser_test.php b/tests/mimetype/guesser_test.php index b74a9f236e..fa53e6c8c4 100644 --- a/tests/mimetype/guesser_test.php +++ b/tests/mimetype/guesser_test.php @@ -206,4 +206,25 @@ class guesser_test extends \phpbb_test_case $this->assertInstanceOf('\phpbb\mimetype\content_guesser', $guessers[0]); $this->assertInstanceOf('\phpbb\mimetype\extension_guesser', $guessers[3]); } + + public function data_choose_mime_type() + { + return array( + array('application/octet-stream', 'application/octet-stream', null), + array('application/octet-stream', 'application/octet-stream', 'application/octet-stream'), + array('binary', 'application/octet-stream', 'binary'), + array('image/jpeg', 'application/octet-stream', 'image/jpeg'), + array('image/jpeg', 'binary', 'image/jpeg'), + array('image/jpeg', 'image/jpg', 'image/jpeg'), + array('image/jpeg', 'image/jpeg', 'binary'), + ); + } + + /** + * @dataProvider data_choose_mime_type + */ + public function test_choose_mime_type($expected, $mime_type, $guess) + { + $this->assertSame($expected, $this->guesser->choose_mime_type($mime_type, $guess)); + } }