* This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ namespace Test; class Preview extends \PHPUnit_Framework_TestCase { public function testIsPreviewDeleted() { $user = $this->initFS(); $rootView = new \OC\Files\View(''); $rootView->mkdir('/'.$user); $rootView->mkdir('/'.$user.'/files'); $samplefile = '/'.$user.'/files/test.txt'; $rootView->file_put_contents($samplefile, 'dummy file data'); $x = 50; $y = 50; $preview = new \OC\Preview($user, 'files/', 'test.txt', $x, $y); $preview->getPreview(); $fileinfo = $rootView->getFileInfo($samplefile); $fileid = $fileinfo['fileid']; $thumbcachefile = '/' . $user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileid . '/' . $x . '-' . $y . '.png'; $this->assertEquals($rootView->file_exists($thumbcachefile), true); $preview->deletePreview(); $this->assertEquals($rootView->file_exists($thumbcachefile), false); } public function testAreAllPreviewsDeleted() { $user = $this->initFS(); $rootView = new \OC\Files\View(''); $rootView->mkdir('/'.$user); $rootView->mkdir('/'.$user.'/files'); $samplefile = '/'.$user.'/files/test.txt'; $rootView->file_put_contents($samplefile, 'dummy file data'); $x = 50; $y = 50; $preview = new \OC\Preview($user, 'files/', 'test.txt', $x, $y); $preview->getPreview(); $fileinfo = $rootView->getFileInfo($samplefile); $fileid = $fileinfo['fileid']; $thumbcachefolder = '/' . $user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileid . '/'; $this->assertEquals($rootView->is_dir($thumbcachefolder), true); $preview->deleteAllPreviews(); $this->assertEquals($rootView->is_dir($thumbcachefolder), false); } public function testIsMaxSizeWorking() { $user = $this->initFS(); $maxX = 250; $maxY = 250; \OC_Config::setValue('preview_max_x', $maxX); \OC_Config::setValue('preview_max_y', $maxY); $rootView = new \OC\Files\View(''); $rootView->mkdir('/'.$user); $rootView->mkdir('/'.$user.'/files'); $samplefile = '/'.$user.'/files/test.txt'; $rootView->file_put_contents($samplefile, 'dummy file data'); $preview = new \OC\Preview($user, 'files/', 'test.txt', 1000, 1000); $image = $preview->getPreview(); $this->assertEquals($image->width(), $maxX); $this->assertEquals($image->height(), $maxY); } public function testTxtBlacklist() { $user = $this->initFS(); $x = 32; $y = 32; $txt = 'random text file'; $ics = file_get_contents(__DIR__ . '/../data/testcal.ics'); $vcf = file_get_contents(__DIR__ . '/../data/testcontact.vcf'); $rootView = new \OC\Files\View(''); $rootView->mkdir('/'.$user); $rootView->mkdir('/'.$user.'/files'); $toTest = array('txt', 'ics', 'vcf'); foreach($toTest as $test) { $sample = '/'.$user.'/files/test.'.$test; $rootView->file_put_contents($sample, ${$test}); $preview = new \OC\Preview($user, 'files/', 'test.'.$test, $x, $y); $image = $preview->getPreview(); $resource = $image->resource(); //http://stackoverflow.com/questions/5702953/imagecolorat-and-transparency $colorIndex = imagecolorat($resource, 1, 1); $colorInfo = imagecolorsforindex($resource, $colorIndex); $isTransparent = ($colorInfo['alpha'] === 127); if($test === 'txt') { $this->assertEquals($isTransparent, false); } else { $this->assertEquals($isTransparent, true); } } } private function initFS() { if(\OC\Files\Filesystem::getView()){ $user = \OC_User::getUser(); }else{ $user=uniqid(); \OC_User::setUserId($user); \OC\Files\Filesystem::init($user, '/'.$user.'/files'); } \OC\Files\Filesystem::mount('OC\Files\Storage\Temporary', array(), '/'); return $user; } }