Skip to content

Commit

Permalink
Fix preview generation in files api controller and adding unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
DeepDiver1975 committed Apr 18, 2018
1 parent 959efd1 commit d2ed48f
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 1 deletion.
1 change: 0 additions & 1 deletion lib/private/PreviewManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@ public function createPreview($file, $maxX = 100, $maxY = 75, $scaleUp = false)
if ($user === null) {
throw new NotLoggedInException();
}
$file = $this->rootFolder->getUserFolder($user->getUID())->get($file);
$preview = new Preview('', '/', $file, $maxX, $maxY, $scaleUp);
return $preview->getPreview();
}
Expand Down
88 changes: 88 additions & 0 deletions tests/lib/PreviewManagerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?php
/**
* @author Thomas Müller <[email protected]>
*
* @copyright Copyright (c) 2018, ownCloud GmbH
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/

namespace Test;

use OC\Files\Filesystem;
use OC\Files\Storage\Temporary;
use OC\Files\View;
use OC\PreviewManager;
use OCP\Files\IRootFolder;
use OCP\IConfig;
use OCP\IImage;
use OCP\IUser;
use OCP\IUserSession;
use Test\Traits\MountProviderTrait;
use Test\Traits\UserTrait;

/**
* Class PreviewManagerTest
*
* @group DB
*
* @package Test
*/
class PreviewManagerTest extends TestCase {
use UserTrait;
use MountProviderTrait;

const TEST_PREVIEW_USER1 = 'test-preview-user1';

/** @var IUser */
private $user;
/** @var View */
private $rootView;

protected function setUp() {
parent::setUp();

$this->user = $this->createUser(self::TEST_PREVIEW_USER1, self::TEST_PREVIEW_USER1);
static::loginAsUser(self::TEST_PREVIEW_USER1);

$storage = new Temporary([]);
Filesystem::mount($storage, [], '/' . self::TEST_PREVIEW_USER1 . '/');

$this->rootView = new View('');
$this->rootView->mkdir('/' . self::TEST_PREVIEW_USER1);
$this->rootView->mkdir('/' . self::TEST_PREVIEW_USER1 . '/files');

$imgData = file_get_contents(\OC::$SERVERROOT . '/tests/data/testimage.jpg');
$imgPath = '/' . self::TEST_PREVIEW_USER1 . '/files/testimage.jpg';
$this->rootView->file_put_contents($imgPath, $imgData);
}

public function testCreatePreview() {
/** @var IConfig $config */
$config = $this->createMock(IConfig::class);
/** @var IRootFolder $rootFolder */
$rootFolder = $this->createMock(IRootFolder::class);
/** @var IUserSession | \PHPUnit_Framework_MockObject_MockObject $userSession */
$userSession = $this->createMock(IUserSession::class);

$userSession->method('getUser')->willReturn($this->user);

$previewManager = new PreviewManager($config, $rootFolder, $userSession);

$image = $previewManager->createPreview('files/testimage.jpg');
$this->assertInstanceOf(IImage::class, $image);
$this->assertTrue($image->valid());
}
}

0 comments on commit d2ed48f

Please sign in to comment.