markTestSkipped('This PHP Version has no finfo, has mime_content_type, ' . ' but mime_content_type exhibits buggy behavior on this system.' ); } // Prevent error in the next check if (!function_exists('mime_content_type')) { $this->markTestSkipped('mime_content_type function is not available.'); } // Sometimes mime_content_type() gives application/zip and sometimes // application/x-zip ... $expectedMimeType = mime_content_type(dirname(__FILE__) . '/_files/test.zip'); if (!in_array($expectedMimeType, array('application/zip', 'application/x-zip'))) { $this->markTestSkipped('mime_content_type exhibits buggy behavior on this system!'); } $valuesExpected = array( array(null, true), array('zip', true), array('test/notype', false), array('application/x-zip, application/zip, application/x-tar', true), array(array('application/x-zip', 'application/zip', 'application/x-tar'), true), array(array('zip', 'tar'), true), array(array('tar', 'arj'), false), ); $files = array( 'name' => 'test.zip', 'type' => $expectedMimeType, 'size' => 200, 'tmp_name' => dirname(__FILE__) . '/_files/test.zip', 'error' => 0 ); foreach ($valuesExpected as $element) { $validator = new Zend_Validate_File_IsCompressed($element[0]); $validator->enableHeaderCheck(); $this->assertEquals( $element[1], $validator->isValid(dirname(__FILE__) . '/_files/test.zip', $files), "Tested with " . var_export($element, 1) ); } } /** * Ensures that getMimeType() returns expected value * * @return void */ public function testGetMimeType() { $validator = new Zend_Validate_File_IsCompressed('image/gif'); $this->assertEquals('image/gif', $validator->getMimeType()); $validator = new Zend_Validate_File_IsCompressed(array('image/gif', 'video', 'text/test')); $this->assertEquals('image/gif,video,text/test', $validator->getMimeType()); $validator = new Zend_Validate_File_IsCompressed(array('image/gif', 'video', 'text/test')); $this->assertEquals(array('image/gif', 'video', 'text/test'), $validator->getMimeType(true)); } /** * Ensures that setMimeType() returns expected value * * @return void */ public function testSetMimeType() { $validator = new Zend_Validate_File_IsCompressed('image/gif'); $validator->setMimeType('image/jpeg'); $this->assertEquals('image/jpeg', $validator->getMimeType()); $this->assertEquals(array('image/jpeg'), $validator->getMimeType(true)); $validator->setMimeType('image/gif, text/test'); $this->assertEquals('image/gif,text/test', $validator->getMimeType()); $this->assertEquals(array('image/gif', 'text/test'), $validator->getMimeType(true)); $validator->setMimeType(array('video/mpeg', 'gif')); $this->assertEquals('video/mpeg,gif', $validator->getMimeType()); $this->assertEquals(array('video/mpeg', 'gif'), $validator->getMimeType(true)); } /** * Ensures that addMimeType() returns expected value * * @return void */ public function testAddMimeType() { $validator = new Zend_Validate_File_IsCompressed('image/gif'); $validator->addMimeType('text'); $this->assertEquals('image/gif,text', $validator->getMimeType()); $this->assertEquals(array('image/gif', 'text'), $validator->getMimeType(true)); $validator->addMimeType('jpg, to'); $this->assertEquals('image/gif,text,jpg,to', $validator->getMimeType()); $this->assertEquals(array('image/gif', 'text', 'jpg', 'to'), $validator->getMimeType(true)); $validator->addMimeType(array('zip', 'ti')); $this->assertEquals('image/gif,text,jpg,to,zip,ti', $validator->getMimeType()); $this->assertEquals(array('image/gif', 'text', 'jpg', 'to', 'zip', 'ti'), $validator->getMimeType(true)); $validator->addMimeType(''); $this->assertEquals('image/gif,text,jpg,to,zip,ti', $validator->getMimeType()); $this->assertEquals(array('image/gif', 'text', 'jpg', 'to', 'zip', 'ti'), $validator->getMimeType(true)); } /** * @ZF-8111 */ public function testErrorMessages() { $files = array( 'name' => 'picture.jpg', 'type' => 'image/jpeg', 'size' => 200, 'tmp_name' => dirname(__FILE__) . '/_files/picture.jpg', 'error' => 0 ); $validator = new Zend_Validate_File_IsCompressed('test/notype'); $validator->enableHeaderCheck(); $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/picture.jpg', $files)); $error = $validator->getMessages(); $this->assertTrue(array_key_exists('fileIsCompressedFalseType', $error)); } public function testOptionsAtConstructor() { if (!extension_loaded('fileinfo')) { $this->markTestSkipped('This PHP Version has no finfo installed'); } if (version_compare(PHP_VERSION, '5.3', '>=')) { $magicFile = dirname(__FILE__) . '/_files/magic-php53.mime'; } else { $magicFile = dirname(__FILE__) . '/_files/magic.mime'; } $validator = new Zend_Validate_File_IsCompressed(array( 'image/gif', 'image/jpg', 'magicfile' => $magicFile, 'headerCheck' => true)); $this->assertEquals($magicFile, $validator->getMagicFile()); $this->assertTrue($validator->getHeaderCheck()); $this->assertEquals('image/gif,image/jpg', $validator->getMimeType()); } } // Call Zend_Validate_File_MimeTypeTest::main() if this source file is executed directly. if (PHPUnit_MAIN_METHOD == "Zend_Validate_File_IsCompressedTest::main") { Zend_Validate_File_IsCompressedTest::main(); }