aboutsummaryrefslogtreecommitdiffstats
path: root/tests/mimetype
diff options
context:
space:
mode:
authorMarc Alexander <admin@m-a-styles.de>2013-10-23 18:36:11 +0200
committerMarc Alexander <admin@m-a-styles.de>2013-10-23 18:36:11 +0200
commitc8040024cb9c1d28b669568789c5dfacc0941f54 (patch)
treec415efc1e73613432c2de1bb3feb87bc5544a6cb /tests/mimetype
parent36d314e032757fc8d86f8f0daddc596e0e95ca8e (diff)
downloadforums-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/jpgbin0 -> 519 bytes
-rw-r--r--tests/mimetype/guesser_test.php83
-rw-r--r--tests/mimetype/incorrect_guesser.php18
-rw-r--r--tests/mimetype/null_guesser.php30
4 files changed, 131 insertions, 0 deletions
diff --git a/tests/mimetype/fixtures/jpg b/tests/mimetype/fixtures/jpg
new file mode 100644
index 0000000000..3cd5038e38
--- /dev/null
+++ b/tests/mimetype/fixtures/jpg
Binary files differ
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;
+ }
+}