aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/phpbb/mimetype/guesser.php8
-rw-r--r--tests/mimetype/guesser_test.php21
2 files changed, 25 insertions, 4 deletions
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));
+ }
}