Merge pull request #4966 from owncloud/text_preview_blacklist

add blacklist to txt preview backend

* owncloud/text_preview_blacklist:
  rename variable in testIsTransparent
  rename testTxtBlacklist to txtBlacklist
  move fileView object initialization to testIsTransparent
  use dataProvider for txt blacklist test
  add test for txt blacklist
  add test data for cal and contact preview
  add blacklist to txt preview backend
This commit is contained in:
Andreas Fischer 2013-09-29 23:20:34 +02:00
commit 9ba0edcadb
4 changed files with 71 additions and 1 deletions

View File

@ -9,11 +9,21 @@ namespace OC\Preview;
class TXT extends Provider {
private static $blacklist = array(
'text/calendar',
'text/vcard',
);
public function getMimeType() {
return '/text\/.*/';
}
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) {
$mimetype = $fileview->getMimeType($path);
if(in_array($mimetype, self::$blacklist)) {
return false;
}
$content = $fileview->fopen($path, 'r');
$content = stream_get_contents($content);

13
tests/data/testcal.ics Normal file
View File

@ -0,0 +1,13 @@
BEGIN:VCALENDAR
PRODID:-//some random cal software//EN
VERSION:2.0
BEGIN:VEVENT
CREATED:20130102T120000Z
LAST-MODIFIED:20130102T120000Z
DTSTAMP:20130102T120000Z
UID:f106ecdf-c716-43ef-9d94-4e6f19f2fcfb
SUMMARY:a test cal file
DTSTART;VALUE=DATE:20130101
DTEND;VALUE=DATE:20130102
END:VEVENT
END:VCALENDAR

View File

@ -0,0 +1,6 @@
BEGIN:VCARD
VERSION:3.0
PRODID:-//some random contact software//EN
N:def;abc;;;
FN:abc def
END:VCARD

View File

@ -92,6 +92,47 @@ class Preview extends \PHPUnit_Framework_TestCase {
$this->assertEquals($image->height(), $maxY);
}
public function txtBlacklist() {
$txt = 'random text file';
$ics = file_get_contents(__DIR__ . '/../data/testcal.ics');
$vcf = file_get_contents(__DIR__ . '/../data/testcontact.vcf');
return array(
array('txt', $txt, false),
array('ics', $ics, true),
array('vcf', $vcf, true),
);
}
/**
* @dataProvider txtBlacklist
*/
public function testIsTransparent($extension, $data, $expectedResult) {
$user = $this->initFS();
$rootView = new \OC\Files\View('');
$rootView->mkdir('/'.$user);
$rootView->mkdir('/'.$user.'/files');
$x = 32;
$y = 32;
$sample = '/'.$user.'/files/test.'.$extension;
$rootView->file_put_contents($sample, $data);
$preview = new \OC\Preview($user, 'files/', 'test.'.$extension, $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);
$this->assertEquals(
$expectedResult,
$colorInfo['alpha'] === 127,
'Failed asserting that only previews for text files are transparent.'
);
}
private function initFS() {
if(\OC\Files\Filesystem::getView()){
$user = \OC_User::getUser();
@ -105,4 +146,4 @@ class Preview extends \PHPUnit_Framework_TestCase {
return $user;
}
}
}