diff options
author | Marc Alexander <admin@m-a-styles.de> | 2013-10-23 18:36:11 +0200 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2013-10-23 18:36:11 +0200 |
commit | c8040024cb9c1d28b669568789c5dfacc0941f54 (patch) | |
tree | c415efc1e73613432c2de1bb3feb87bc5544a6cb /tests/mimetype | |
parent | 36d314e032757fc8d86f8f0daddc596e0e95ca8e (diff) | |
download | forums-c8040024cb9c1d28b669568789c5dfacc0941f54.tar forums-c8040024cb9c1d28b669568789c5dfacc0941f54.tar.gz forums-c8040024cb9c1d28b669568789c5dfacc0941f54.tar.bz2 forums-c8040024cb9c1d28b669568789c5dfacc0941f54.tar.xz forums-c8040024cb9c1d28b669568789c5dfacc0941f54.zip |
[ticket/11912] Add tests for phpbb mimetype guesser
PHPBB3-11912
Diffstat (limited to 'tests/mimetype')
-rw-r--r-- | tests/mimetype/fixtures/jpg | bin | 0 -> 519 bytes | |||
-rw-r--r-- | tests/mimetype/guesser_test.php | 83 | ||||
-rw-r--r-- | tests/mimetype/incorrect_guesser.php | 18 | ||||
-rw-r--r-- | tests/mimetype/null_guesser.php | 30 |
4 files changed, 131 insertions, 0 deletions
diff --git a/tests/mimetype/fixtures/jpg b/tests/mimetype/fixtures/jpg Binary files differnew file mode 100644 index 0000000000..3cd5038e38 --- /dev/null +++ b/tests/mimetype/fixtures/jpg diff --git a/tests/mimetype/guesser_test.php b/tests/mimetype/guesser_test.php new file mode 100644 index 0000000000..3728961460 --- /dev/null +++ b/tests/mimetype/guesser_test.php @@ -0,0 +1,83 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +require_once dirname(__FILE__) . '/null_guesser.php'; +require_once dirname(__FILE__) . '/incorrect_guesser.php'; + +class phpbb_mimetype_guesser_test extends phpbb_test_case +{ + public function setUp() + { + $guessers = array( + new Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser(), + new Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser(), + ); + $this->guesser = new \phpbb\mimetype\guesser($guessers); + $this->path = dirname(__FILE__); + $this->jpg_file = $this->path . '/fixtures/jpg'; + } + + public function data_guess_files() + { + return array( + array('image/gif', 'gif'), + array('image/png', 'png'), + array('image/jpeg', 'jpg'), + array('image/tiff', 'tif'), + array('text/html', 'txt'), + array(false, 'foobar'), + ); + } + + /** + * @dataProvider data_guess_files + */ + public function test_guess_files($expected, $file) + { + $this->assertEquals($expected, $this->guesser->guess($this->path . '/../upload/fixture/' . $file)); + } + + public function test_file_not_readable() + { + @chmod($this->jpg_file, 0000); + if (is_readable($this->jpg_file)) + { + @chmod($this->jpg_file, 0644); + $this->markTestSkipped('is_readable always returns true if user is superuser or chmod does not work'); + } + $this->assertEquals(false, $this->guesser->guess($this->jpg_file)); + @chmod($this->jpg_file, 0644); + $this->assertEquals('image/jpeg', $this->guesser->guess($this->jpg_file)); + } + + public function test_null_guess() + { + $guesser = new \phpbb\mimetype\guesser(array(new \phpbb\mimetype\null_guesser)); + $this->assertEquals('application/octet-stream', $guesser->guess($this->jpg_file)); + } + + public function data_incorrect_guessers() + { + return array( + array(array(new \phpbb\mimetype\incorrect_guesser)), + array(array(new \phpbb\mimetype\null_guesser(false))), + array(array()), + ); + } + + /** + * @dataProvider data_incorrect_guessers + * + * @expectedException \LogicException + */ + public function test_incorrect_guesser($guessers) + { + $guesser = new \phpbb\mimetype\guesser($guessers); + } +} diff --git a/tests/mimetype/incorrect_guesser.php b/tests/mimetype/incorrect_guesser.php new file mode 100644 index 0000000000..3939826faa --- /dev/null +++ b/tests/mimetype/incorrect_guesser.php @@ -0,0 +1,18 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +namespace phpbb\mimetype; + +class incorrect_guesser +{ + public function guess($file) + { + return 'image/jpeg'; + } +} diff --git a/tests/mimetype/null_guesser.php b/tests/mimetype/null_guesser.php new file mode 100644 index 0000000000..5316d3726f --- /dev/null +++ b/tests/mimetype/null_guesser.php @@ -0,0 +1,30 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +namespace phpbb\mimetype; + +class null_guesser +{ + protected $is_supported; + + public function __construct($is_supported = true) + { + $this->is_supported = $is_supported; + } + + public function is_supported() + { + return $this->is_supported; + } + + public function guess($file) + { + return null; + } +} |