Explorar el Código

Make sure the file is readable before attempting to create a preview

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v14.0.0beta1
Roeland Jago Douma hace 6 años
padre
commit
14acded171
No account linked to committer's email address
Se han modificado 2 ficheros con 26 adiciones y 0 borrados
  1. 6
    0
      lib/private/Preview/Generator.php
  2. 20
    0
      tests/lib/Preview/GeneratorTest.php

+ 6
- 0
lib/private/Preview/Generator.php Ver fichero

@@ -89,6 +89,12 @@ class Generator {
* @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
*/
public function getPreview(File $file, $width = -1, $height = -1, $crop = false, $mode = IPreview::MODE_FILL, $mimeType = null) {
//Make sure that we can read the file
if (!$file->isReadable()) {
throw new NotFoundException('Cannot read file');
}


$this->eventDispatcher->dispatch(
IPreview::EVENT,
new GenericEvent($file,[

+ 20
- 0
tests/lib/Preview/GeneratorTest.php Ver fichero

@@ -76,6 +76,8 @@ class GeneratorTest extends \Test\TestCase {

public function testGetCachedPreview() {
$file = $this->createMock(File::class);
$file->method('isReadable')
->willReturn(true);
$file->method('getMimeType')
->willReturn('myMimeType');
$file->method('getId')
@@ -122,6 +124,8 @@ class GeneratorTest extends \Test\TestCase {

public function testGetNewPreview() {
$file = $this->createMock(File::class);
$file->method('isReadable')
->willReturn(true);
$file->method('getMimeType')
->willReturn('myMimeType');
$file->method('getId')
@@ -248,6 +252,8 @@ class GeneratorTest extends \Test\TestCase {
$this->expectException(NotFoundException::class);

$file = $this->createMock(File::class);
$file->method('isReadable')
->willReturn(true);

$this->previewManager->method('isMimeSupported')
->with('invalidType')
@@ -271,6 +277,8 @@ class GeneratorTest extends \Test\TestCase {

public function testNoProvider() {
$file = $this->createMock(File::class);
$file->method('isReadable')
->willReturn(true);
$file->method('getMimeType')
->willReturn('myMimeType');
$file->method('getId')
@@ -350,6 +358,8 @@ class GeneratorTest extends \Test\TestCase {
*/
public function testCorrectSize($maxX, $maxY, $reqX, $reqY, $crop, $mode, $expectedX, $expectedY) {
$file = $this->createMock(File::class);
$file->method('isReadable')
->willReturn(true);
$file->method('getMimeType')
->willReturn('myMimeType');
$file->method('getId')
@@ -416,4 +426,14 @@ class GeneratorTest extends \Test\TestCase {
$this->assertSame($preview, $result);
}
}

public function testUnreadbleFile() {
$file = $this->createMock(File::class);
$file->method('isReadable')
->willReturn(false);

$this->expectException(NotFoundException::class);

$this->generator->getPreview($file, 100, 100, false);
}
}

Cargando…
Cancelar
Guardar