diff options
| -rw-r--r-- | tests/mimetype/guesser_test.php | 41 | 
1 files changed, 40 insertions, 1 deletions
diff --git a/tests/mimetype/guesser_test.php b/tests/mimetype/guesser_test.php index 9f0371262b..7c58340a7a 100644 --- a/tests/mimetype/guesser_test.php +++ b/tests/mimetype/guesser_test.php @@ -19,7 +19,9 @@ function function_exists($name)  class guesser_test extends \phpbb_test_case  { -	public static $function_exists = true; +	public static $function_exists = false; + +	protected $fileinfo_supported = false;  	public function setUp()  	{ @@ -28,7 +30,16 @@ class guesser_test extends \phpbb_test_case  		$guessers = array(  			new \Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser(),  			new \Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser(), +			new \phpbb\mimetype\extension_guesser, +			new \phpbb\mimetype\content_guesser,  		); + +		// Check if any guesser except the extension_guesser is available +		$this->fileinfo_supported = $guessers[0]->isSupported() | $guessers[1]->isSupported() | $guessers[3]->is_supported(); + +		// Also create a guesser that emulates not having fileinfo available +		$this->guesser_no_fileinfo = new \phpbb\mimetype\guesser(array($guessers[2])); +  		$this->guesser = new \phpbb\mimetype\guesser($guessers);  		$this->path = dirname(__FILE__);  		$this->jpg_file = $this->path . '/fixtures/jpg'; @@ -52,9 +63,32 @@ class guesser_test extends \phpbb_test_case  	*/  	public function test_guess_files($expected, $file)  	{ +		// We will always get application/octet-stream as mimetype if only the +		// extension guesser is supported +		if (!$this->fileinfo_supported) +		{ +			$this->markTestSkipped('Unable to run tests depending on fileinfo if it is not available'); +		}  		$this->assertEquals($expected, $this->guesser->guess($this->path . '/../upload/fixture/' . $file));  	} +	public function data_guess_files_no_fileinfo() +	{ +		return array( +			array('application/octet-stream', 'gif'), +			array('application/octet-stream', 'txt'), +			array(false, 'foobar'), +		); +	} + +	/** +	* @dataProvider data_guess_files_no_fileinfo +	*/ +	public function test_guess_files_no_fileinfo($expected, $file) +	{ +		$this->assertEquals($expected, $this->guesser_no_fileinfo->guess($this->path . '/../upload/fixture/' . $file)); +	} +  	public function test_file_not_readable()  	{  		@chmod($this->jpg_file, 0000); @@ -130,6 +164,11 @@ class guesser_test extends \phpbb_test_case  		$supported = false;  		self::$function_exists = !$overload; +		if (!\function_exists('mime_content_type')) +		{ +			$this->markTestSkipped('Emulating supported mime_content_type() when it is not supported will cause a fatal error'); +		} +  		// Cover possible LogicExceptions  		foreach ($guessers as $cur_guesser)  		{  | 
