/** * Ensures that the validator follows expected behavior * * @return void */ public function testBasic() { $valuesExpected = array(array('3f8d07e2', true), array('9f8d07e2', false), array(array('9f8d07e2', '3f8d07e2'), true), array(array('9f8d07e2', '7f8d07e2'), false)); foreach ($valuesExpected as $element) { $validator = new Zend_Validate_File_Hash($element[0]); $this->assertEquals($element[1], $validator->isValid(dirname(__FILE__) . '/_files/picture.jpg'), "Tested with " . var_export($element, 1)); } $valuesExpected = array(array(array('ed74c22109fe9f110579f77b053b8bc3', 'algorithm' => 'md5'), true), array(array('4d74c22109fe9f110579f77b053b8bc3', 'algorithm' => 'md5'), false), array(array('4d74c22109fe9f110579f77b053b8bc3', 'ed74c22109fe9f110579f77b053b8bc3', 'algorithm' => 'md5'), true), array(array('1d74c22109fe9f110579f77b053b8bc3', '4d74c22109fe9f110579f77b053b8bc3', 'algorithm' => 'md5'), false)); foreach ($valuesExpected as $element) { $validator = new Zend_Validate_File_Hash($element[0]); $this->assertEquals($element[1], $validator->isValid(dirname(__FILE__) . '/_files/picture.jpg'), "Tested with " . var_export($element, 1)); } $validator = new Zend_Validate_File_Hash('3f8d07e2'); $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/nofile.mo')); $this->assertTrue(array_key_exists('fileHashNotFound', $validator->getMessages())); $files = array('name' => 'test1', 'type' => 'text', 'size' => 200, 'tmp_name' => 'tmp_test1', 'error' => 0); $validator = new Zend_Validate_File_Hash('3f8d07e2'); $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/nofile.mo', $files)); $this->assertTrue(array_key_exists('fileHashNotFound', $validator->getMessages())); $files = array('name' => 'testsize.mo', 'type' => 'text', 'size' => 200, 'tmp_name' => dirname(__FILE__) . '/_files/testsize.mo', 'error' => 0); $validator = new Zend_Validate_File_Hash('3f8d07e2'); $this->assertTrue($validator->isValid(dirname(__FILE__) . '/_files/picture.jpg', $files)); $files = array('name' => 'testsize.mo', 'type' => 'text', 'size' => 200, 'tmp_name' => dirname(__FILE__) . '/_files/testsize.mo', 'error' => 0); $validator = new Zend_Validate_File_Hash('9f8d07e2'); $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/picture.jpg', $files)); $this->assertTrue(array_key_exists('fileHashDoesNotMatch', $validator->getMessages())); }
/** * @param integer $sqArtefato * @return boolean */ public function hasImage($sqArtefato, $sqTipoArtefato = null) { try { if ($sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) { $entityArtefato = $this->_getRepository($this->_entityArtefato)->find($sqArtefato); $sqTipoArtefato = $entityArtefato->getSqTipoArtefatoAssunto()->getSqTipoArtefato()->getSqTipoArtefato(); /** * se for processo recupera a 1ª peça para verificar se tem imagem */ if ($sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) { $entityArtefatoVinculoPrimeiraPeca = $this->_getRepository($this->_entityArtefatoVinculo)->findOneBy(array('sqArtefatoPai' => $sqArtefato, 'sqTipoVinculoArtefato' => \Core_Configuration::getSgdoceTipoVinculoArtefatoAutuacao())); /** * Não existe vinculo de primeira peça para o processo */ if (null === $entityArtefatoVinculoPrimeiraPeca) { return false; } //pega o sqArtefato do pai $sqArtefato = $entityArtefatoVinculoPrimeiraPeca->getSqArtefatoFilho()->getSqArtefato(); } } $filePath = $this->getImagePath($sqArtefato); if (empty($filePath)) { return false; } $file = sprintf('%1$s%2$s..%2$sdata%2$s%3$s', APPLICATION_PATH, DIRECTORY_SEPARATOR, $filePath); if (!file_exists($file)) { throw new \Core_Exception_ServiceLayer('Imagem cadastrada, porém não foi encontrado o arquivo da mesma'); } $artefatoImagemEntity = $this->_getArtefatoImageEntity($sqArtefato); $hashValidate = new \Zend_Validate_File_Hash(array('hash' => $artefatoImagemEntity->getTxHash(), 'algorithm' => self::HASH_ALGORITHM)); if (!$hashValidate->isValid($file)) { throw new \Core_Exception_ServiceLayer('Autenticidade da imagem violada'); } } catch (\Exception $exp) { $message = sprintf('[SGDoc-e] Exception %s in %s(%d): "%s"', get_class($exp), __METHOD__, $sqArtefato, $exp->getMessage()); error_log($message); throw $exp; } return true; }