diff options
Diffstat (limited to 'apps/files/tests/controller')
-rw-r--r-- | apps/files/tests/controller/ViewControllerTest.php | 268 | ||||
-rw-r--r-- | apps/files/tests/controller/apicontrollertest.php | 338 |
2 files changed, 0 insertions, 606 deletions
diff --git a/apps/files/tests/controller/ViewControllerTest.php b/apps/files/tests/controller/ViewControllerTest.php deleted file mode 100644 index 657ab6cb338..00000000000 --- a/apps/files/tests/controller/ViewControllerTest.php +++ /dev/null @@ -1,268 +0,0 @@ -<?php -/** - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Lukas Reschke <lukas@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @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 OCA\Files\Tests\Controller; - -use OCA\Files\Controller\ViewController; -use OCP\AppFramework\Http; -use OCP\Template; -use Test\TestCase; -use OCP\IRequest; -use OCP\IURLGenerator; -use OCP\AppFramework\Http\RedirectResponse; -use OCP\INavigationManager; -use OCP\IL10N; -use OCP\IConfig; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; - -/** - * Class ViewControllerTest - * - * @package OCA\Files\Tests\Controller - */ -class ViewControllerTest extends TestCase { - /** @var IRequest */ - private $request; - /** @var IURLGenerator */ - private $urlGenerator; - /** @var INavigationManager */ - private $navigationManager; - /** @var IL10N */ - private $l10n; - /** @var IConfig */ - private $config; - /** @var EventDispatcherInterface */ - private $eventDispatcher; - /** @var ViewController */ - private $viewController; - - public function setUp() { - parent::setUp(); - $this->request = $this->getMock('\OCP\IRequest'); - $this->urlGenerator = $this->getMock('\OCP\IURLGenerator'); - $this->navigationManager = $this->getMock('\OCP\INavigationManager'); - $this->l10n = $this->getMock('\OCP\IL10N'); - $this->config = $this->getMock('\OCP\IConfig'); - $this->eventDispatcher = $this->getMock('\Symfony\Component\EventDispatcher\EventDispatcherInterface'); - $this->viewController = $this->getMockBuilder('\OCA\Files\Controller\ViewController') - ->setConstructorArgs([ - 'files', - $this->request, - $this->urlGenerator, - $this->navigationManager, - $this->l10n, - $this->config, - $this->eventDispatcher - ]) - ->setMethods([ - 'getStorageInfo', - 'renderScript' - ]) - ->getMock(); - } - - public function testIndexWithIE8RedirectAndDirDefined() { - $this->request - ->expects($this->once()) - ->method('isUserAgent') - ->with(['/MSIE 8.0/']) - ->will($this->returnValue(true)); - $this->urlGenerator - ->expects($this->once()) - ->method('linkToRoute') - ->with('files.view.index') - ->will($this->returnValue('/apps/files/')); - - $expected = new Http\RedirectResponse('/apps/files/#?dir=MyDir'); - $this->assertEquals($expected, $this->viewController->index('MyDir')); - } - - public function testIndexWithIE8RedirectAndViewDefined() { - $this->request - ->expects($this->once()) - ->method('isUserAgent') - ->with(['/MSIE 8.0/']) - ->will($this->returnValue(true)); - $this->urlGenerator - ->expects($this->once()) - ->method('linkToRoute') - ->with('files.view.index') - ->will($this->returnValue('/apps/files/')); - - $expected = new Http\RedirectResponse('/apps/files/#?dir=/&view=MyView'); - $this->assertEquals($expected, $this->viewController->index('', 'MyView')); - } - - public function testIndexWithIE8RedirectAndViewAndDirDefined() { - $this->request - ->expects($this->once()) - ->method('isUserAgent') - ->with(['/MSIE 8.0/']) - ->will($this->returnValue(true)); - $this->urlGenerator - ->expects($this->once()) - ->method('linkToRoute') - ->with('files.view.index') - ->will($this->returnValue('/apps/files/')); - - $expected = new RedirectResponse('/apps/files/#?dir=MyDir&view=MyView'); - $this->assertEquals($expected, $this->viewController->index('MyDir', 'MyView')); - } - - public function testIndexWithRegularBrowser() { - $this->request - ->expects($this->once()) - ->method('isUserAgent') - ->with(['/MSIE 8.0/']) - ->will($this->returnValue(false)); - $this->viewController - ->expects($this->once()) - ->method('getStorageInfo') - ->will($this->returnValue([ - 'relative' => 123, - 'owner' => 'MyName', - 'ownerDisplayName' => 'MyDisplayName', - ])); - - $this->config - ->expects($this->any()) - ->method('getAppValue') - ->will($this->returnArgument(2)); - - $nav = new Template('files', 'appnavigation'); - $nav->assign('navigationItems', [ - [ - 'id' => 'files', - 'appname' => 'files', - 'script' => 'list.php', - 'order' => 0, - 'name' => new \OC_L10N_String(new \OC_L10N('files'), 'All files', []), - 'active' => false, - 'icon' => '', - ], - [ - 'id' => 'favorites', - 'appname' => 'files', - 'script' => 'simplelist.php', - 'order' => 5, - 'name' => null, - 'active' => false, - 'icon' => '', - ], - [ - 'id' => 'sharingin', - 'appname' => 'files_sharing', - 'script' => 'list.php', - 'order' => 10, - 'name' => new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared with you', []), - 'active' => false, - 'icon' => '', - ], - [ - 'id' => 'sharingout', - 'appname' => 'files_sharing', - 'script' => 'list.php', - 'order' => 15, - 'name' => new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared with others', []), - 'active' => false, - 'icon' => '', - ], - [ - 'id' => 'sharinglinks', - 'appname' => 'files_sharing', - 'script' => 'list.php', - 'order' => 20, - 'name' => new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared by link', []), - 'active' => false, - 'icon' => '', - ], - [ - 'id' => 'systemtagsfilter', - 'appname' => 'systemtags', - 'script' => 'list.php', - 'order' => 25, - 'name' => new \OC_L10N_String(new \OC_L10N('systemtags'), 'Tags', []), - 'active' => false, - 'icon' => '', - ], - [ - 'id' => 'trashbin', - 'appname' => 'files_trashbin', - 'script' => 'list.php', - 'order' => 50, - 'name' => new \OC_L10N_String(new \OC_L10N('files_trashbin'), 'Deleted files', []), - 'active' => false, - 'icon' => '', - ], - ]); - - $expected = new Http\TemplateResponse( - 'files', - 'index', - [ - 'usedSpacePercent' => 123, - 'owner' => 'MyName', - 'ownerDisplayName' => 'MyDisplayName', - 'isPublic' => false, - 'mailNotificationEnabled' => 'no', - 'mailPublicNotificationEnabled' => 'no', - 'allowShareWithLink' => 'yes', - 'appNavigation' => $nav, - 'appContents' => [ - [ - 'id' => 'files', - 'content' => null, - ], - [ - 'id' => 'favorites', - 'content' => null, - ], - [ - 'id' => 'sharingin', - 'content' => null, - ], - [ - 'id' => 'sharingout', - 'content' => null, - ], - [ - 'id' => 'sharinglinks', - 'content' => null, - ], - [ - 'id' => 'systemtagsfilter', - 'content' => null, - ], - [ - 'id' => 'trashbin', - 'content' => null, - ], - ], - ] - ); - $policy = new Http\ContentSecurityPolicy(); - $policy->addAllowedFrameDomain('\'self\''); - $expected->setContentSecurityPolicy($policy); - $this->assertEquals($expected, $this->viewController->index('MyDir', 'MyView')); - } -} diff --git a/apps/files/tests/controller/apicontrollertest.php b/apps/files/tests/controller/apicontrollertest.php deleted file mode 100644 index a9b248a36fe..00000000000 --- a/apps/files/tests/controller/apicontrollertest.php +++ /dev/null @@ -1,338 +0,0 @@ -<?php -/** - * @author Lukas Reschke <lukas@owncloud.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Roeland Jago Douma <rullzer@owncloud.com> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @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 OCA\Files\Controller; - -use OC\Files\FileInfo; -use OCP\AppFramework\Http; -use OCP\Files\NotFoundException; -use OCP\Files\StorageNotAvailableException; -use Test\TestCase; -use OCP\IRequest; -use OCA\Files\Service\TagService; -use OCP\AppFramework\Http\DataResponse; -use OCP\IPreview; -use OCP\Image; - -/** - * Class ApiController - * - * @package OCA\Files\Controller - */ -class ApiControllerTest extends TestCase { - /** @var string */ - private $appName = 'files'; - /** @var IRequest */ - private $request; - /** @var TagService */ - private $tagService; - /** @var IPreview */ - private $preview; - /** @var ApiController */ - private $apiController; - /** @var \OCP\Share\IManager */ - private $shareManager; - - public function setUp() { - $this->request = $this->getMockBuilder('\OCP\IRequest') - ->disableOriginalConstructor() - ->getMock(); - $user = $this->getMock('\OCP\IUser'); - $user->expects($this->any()) - ->method('getUID') - ->will($this->returnValue('user1')); - $userSession = $this->getMock('\OCP\IUserSession'); - $userSession->expects($this->any()) - ->method('getUser') - ->will($this->returnValue($user)); - $this->tagService = $this->getMockBuilder('\OCA\Files\Service\TagService') - ->disableOriginalConstructor() - ->getMock(); - $this->shareManager = $this->getMockBuilder('\OCP\Share\IManager') - ->disableOriginalConstructor() - ->getMock(); - $this->preview = $this->getMockBuilder('\OCP\IPreview') - ->disableOriginalConstructor() - ->getMock(); - - $this->apiController = new ApiController( - $this->appName, - $this->request, - $userSession, - $this->tagService, - $this->preview, - $this->shareManager - ); - } - - public function testGetFilesByTagEmpty() { - $tagName = 'MyTagName'; - $this->tagService->expects($this->once()) - ->method('getFilesByTag') - ->with($this->equalTo([$tagName])) - ->will($this->returnValue([])); - - $expected = new DataResponse(['files' => []]); - $this->assertEquals($expected, $this->apiController->getFilesByTag([$tagName])); - } - - public function testGetFilesByTagSingle() { - $tagName = 'MyTagName'; - $fileInfo = new FileInfo( - '/root.txt', - $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor() - ->getMock(), - '/var/www/root.txt', - [ - 'mtime' => 55, - 'mimetype' => 'application/pdf', - 'permissions' => 31, - 'size' => 1234, - 'etag' => 'MyEtag', - ], - $this->getMockBuilder('\OCP\Files\Mount\IMountPoint') - ->disableOriginalConstructor() - ->getMock() - ); - $node = $this->getMockBuilder('\OC\Files\Node\File') - ->disableOriginalConstructor() - ->getMock(); - $node->expects($this->once()) - ->method('getFileInfo') - ->will($this->returnValue($fileInfo)); - $this->tagService->expects($this->once()) - ->method('getFilesByTag') - ->with($this->equalTo([$tagName])) - ->will($this->returnValue([$node])); - - $this->shareManager->expects($this->any()) - ->method('getSharesBy') - ->with( - $this->equalTo('user1'), - $this->anything(), - $node, - $this->equalTo(false), - $this->equalTo(1) - ) - ->will($this->returnCallback(function($userId, $shareType) { - if ($shareType === \OCP\Share::SHARE_TYPE_USER || $shareType === \OCP\Share::SHARE_TYPE_LINK) { - return ['dummy_share']; - } - return []; - })); - - $expected = new DataResponse([ - 'files' => [ - [ - 'id' => null, - 'parentId' => null, - 'mtime' => 55000, - 'name' => 'root.txt', - 'permissions' => 31, - 'mimetype' => 'application/pdf', - 'size' => 1234, - 'type' => 'file', - 'etag' => 'MyEtag', - 'path' => '/', - 'tags' => [ - [ - 'MyTagName' - ] - ], - 'shareTypes' => [\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_LINK] - ], - ], - ]); - $this->assertEquals($expected, $this->apiController->getFilesByTag([$tagName])); - } - - public function testGetFilesByTagMultiple() { - $tagName = 'MyTagName'; - $fileInfo1 = new FileInfo( - '/root.txt', - $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor() - ->getMock(), - '/var/www/root.txt', - [ - 'mtime' => 55, - 'mimetype' => 'application/pdf', - 'permissions' => 31, - 'size' => 1234, - 'etag' => 'MyEtag', - ], - $this->getMockBuilder('\OCP\Files\Mount\IMountPoint') - ->disableOriginalConstructor() - ->getMock() - ); - $fileInfo2 = new FileInfo( - '/root.txt', - $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor() - ->getMock(), - '/var/www/some/sub.txt', - [ - 'mtime' => 999, - 'mimetype' => 'application/binary', - 'permissions' => 31, - 'size' => 9876, - 'etag' => 'SubEtag', - ], - $this->getMockBuilder('\OCP\Files\Mount\IMountPoint') - ->disableOriginalConstructor() - ->getMock() - ); - $node1 = $this->getMockBuilder('\OC\Files\Node\File') - ->disableOriginalConstructor() - ->getMock(); - $node1->expects($this->once()) - ->method('getFileInfo') - ->will($this->returnValue($fileInfo1)); - $node2 = $this->getMockBuilder('\OC\Files\Node\File') - ->disableOriginalConstructor() - ->getMock(); - $node2->expects($this->once()) - ->method('getFileInfo') - ->will($this->returnValue($fileInfo2)); - $this->tagService->expects($this->once()) - ->method('getFilesByTag') - ->with($this->equalTo([$tagName])) - ->will($this->returnValue([$node1, $node2])); - - $expected = new DataResponse([ - 'files' => [ - [ - 'id' => null, - 'parentId' => null, - 'mtime' => 55000, - 'name' => 'root.txt', - 'permissions' => 31, - 'mimetype' => 'application/pdf', - 'size' => 1234, - 'type' => 'file', - 'etag' => 'MyEtag', - 'path' => '/', - 'tags' => [ - [ - 'MyTagName' - ] - ], - ], - [ - 'id' => null, - 'parentId' => null, - 'mtime' => 999000, - 'name' => 'root.txt', - 'permissions' => 31, - 'mimetype' => 'application/binary', - 'size' => 9876, - 'type' => 'file', - 'etag' => 'SubEtag', - 'path' => '/', - 'tags' => [ - [ - 'MyTagName' - ] - ], - ] - ], - ]); - $this->assertEquals($expected, $this->apiController->getFilesByTag([$tagName])); - } - - public function testUpdateFileTagsEmpty() { - $expected = new DataResponse([]); - $this->assertEquals($expected, $this->apiController->updateFileTags('/path.txt')); - } - - public function testUpdateFileTagsWorking() { - $this->tagService->expects($this->once()) - ->method('updateFileTags') - ->with('/path.txt', ['Tag1', 'Tag2']); - - $expected = new DataResponse([ - 'tags' => [ - 'Tag1', - 'Tag2' - ], - ]); - $this->assertEquals($expected, $this->apiController->updateFileTags('/path.txt', ['Tag1', 'Tag2'])); - } - - public function testUpdateFileTagsNotFoundException() { - $this->tagService->expects($this->once()) - ->method('updateFileTags') - ->with('/path.txt', ['Tag1', 'Tag2']) - ->will($this->throwException(new NotFoundException('My error message'))); - - $expected = new DataResponse(['message' => 'My error message'], Http::STATUS_NOT_FOUND); - $this->assertEquals($expected, $this->apiController->updateFileTags('/path.txt', ['Tag1', 'Tag2'])); - } - - public function testUpdateFileTagsStorageNotAvailableException() { - $this->tagService->expects($this->once()) - ->method('updateFileTags') - ->with('/path.txt', ['Tag1', 'Tag2']) - ->will($this->throwException(new StorageNotAvailableException('My error message'))); - - $expected = new DataResponse(['message' => 'My error message'], Http::STATUS_SERVICE_UNAVAILABLE); - $this->assertEquals($expected, $this->apiController->updateFileTags('/path.txt', ['Tag1', 'Tag2'])); - } - - public function testUpdateFileTagsStorageGenericException() { - $this->tagService->expects($this->once()) - ->method('updateFileTags') - ->with('/path.txt', ['Tag1', 'Tag2']) - ->will($this->throwException(new \Exception('My error message'))); - - $expected = new DataResponse(['message' => 'My error message'], Http::STATUS_NOT_FOUND); - $this->assertEquals($expected, $this->apiController->updateFileTags('/path.txt', ['Tag1', 'Tag2'])); - } - - public function testGetThumbnailInvalidSize() { - $expected = new DataResponse(['message' => 'Requested size must be numeric and a positive value.'], Http::STATUS_BAD_REQUEST); - $this->assertEquals($expected, $this->apiController->getThumbnail(0, 0, '')); - } - - public function testGetThumbnailInvaidImage() { - $this->preview->expects($this->once()) - ->method('createPreview') - ->with('files/unknown.jpg', 10, 10, true) - ->willReturn(new Image); - $expected = new DataResponse(['message' => 'File not found.'], Http::STATUS_NOT_FOUND); - $this->assertEquals($expected, $this->apiController->getThumbnail(10, 10, 'unknown.jpg')); - } - - public function testGetThumbnail() { - $this->preview->expects($this->once()) - ->method('createPreview') - ->with('files/known.jpg', 10, 10, true) - ->willReturn(new Image(\OC::$SERVERROOT.'/tests/data/testimage.jpg')); - - $ret = $this->apiController->getThumbnail(10, 10, 'known.jpg'); - - $this->assertEquals(Http::STATUS_OK, $ret->getStatus()); - } -} |