summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2016-03-21 14:20:33 +0100
committerRobin Appelman <icewind@owncloud.com>2016-03-21 14:20:33 +0100
commit0b0b3253bb75f5fffb39201da39139d4f26d8a22 (patch)
tree3a9d6cc07be19420c2af8c5de7e2b4097b5ed327
parentd0dd76bb8ac904cff425d4c32f2033951e3a2ba5 (diff)
downloadnextcloud-server-0b0b3253bb75f5fffb39201da39139d4f26d8a22.tar.gz
nextcloud-server-0b0b3253bb75f5fffb39201da39139d4f26d8a22.zip
properly use fileinfo objects
-rw-r--r--lib/private/files/node/folder.php28
-rw-r--r--tests/lib/files/node/folder.php81
2 files changed, 75 insertions, 34 deletions
diff --git a/lib/private/files/node/folder.php b/lib/private/files/node/folder.php
index c376bfb1881..f4d7dae20a3 100644
--- a/lib/private/files/node/folder.php
+++ b/lib/private/files/node/folder.php
@@ -90,14 +90,14 @@ class Folder extends Node implements \OCP\Files\Folder {
/**
* @param string $path
- * @param array $info
+ * @param FileInfo $info
* @return File|Folder
*/
- protected function createNode($path, $info = array()) {
- if (!isset($info['mimetype'])) {
+ protected function createNode($path, FileInfo $info = null) {
+ if (is_null($info)) {
$isDir = $this->view->is_dir($path);
} else {
- $isDir = $info['mimetype'] === 'httpd/unix-directory';
+ $isDir = $info->getType() === FileInfo::TYPE_FOLDER;
}
if ($isDir) {
return new Folder($this->root, $this->view, $path, $info);
@@ -211,10 +211,9 @@ class Folder extends Node implements \OCP\Files\Folder {
private function searchCommon($method, $args) {
$files = array();
$rootLength = strlen($this->path);
- /**
- * @var \OC\Files\Storage\Storage $storage
- */
- list($storage, $internalPath) = $this->view->resolvePath($this->path);
+ $mount = $this->root->getMount($this->path);
+ $storage = $mount->getStorage();
+ $internalPath = $mount->getInternalPath($this->path);
$internalPath = rtrim($internalPath, '/');
if ($internalPath !== '') {
$internalPath = $internalPath . '/';
@@ -229,7 +228,7 @@ class Folder extends Node implements \OCP\Files\Folder {
$result['internalPath'] = $result['path'];
$result['path'] = substr($result['path'], $internalRootLength);
$result['storage'] = $storage;
- $files[] = $result;
+ $files[] = new \OC\Files\FileInfo($this->path . '/' . $result['path'], $storage, $result['internalPath'], $result, $mount);
}
}
@@ -245,17 +244,14 @@ class Folder extends Node implements \OCP\Files\Folder {
$result['internalPath'] = $result['path'];
$result['path'] = $relativeMountPoint . $result['path'];
$result['storage'] = $storage;
- $files[] = $result;
+ $files[] = new \OC\Files\FileInfo($this->path . '/' . $result['path'], $storage, $result['internalPath'], $result, $mount);
}
}
}
- $result = array();
- foreach ($files as $file) {
- $result[] = $this->createNode($this->normalizePath($this->path . '/' . $file['path']), $file);
- }
-
- return $result;
+ return array_map(function(FileInfo $file) {
+ return $this->createNode($file->getPath(), $file);
+ }, $files);
}
/**
diff --git a/tests/lib/files/node/folder.php b/tests/lib/files/node/folder.php
index 06ca35f7f11..f6d488d6590 100644
--- a/tests/lib/files/node/folder.php
+++ b/tests/lib/files/node/folder.php
@@ -376,6 +376,14 @@ class Folder extends \Test\TestCase {
->method('getCache')
->will($this->returnValue($cache));
+ $mount = $this->getMock('\OCP\Files\Mount\IMountPoint');
+ $mount->expects($this->once())
+ ->method('getStorage')
+ ->will($this->returnValue($storage));
+ $mount->expects($this->once())
+ ->method('getInternalPath')
+ ->will($this->returnValue('foo'));
+
$cache->expects($this->once())
->method('search')
->with('%qw%')
@@ -388,9 +396,10 @@ class Folder extends \Test\TestCase {
->with('/bar/foo')
->will($this->returnValue(array()));
- $view->expects($this->once())
- ->method('resolvePath')
- ->will($this->returnValue(array($storage, 'foo')));
+ $root->expects($this->once())
+ ->method('getMount')
+ ->with('/bar/foo')
+ ->will($this->returnValue($mount));
$node = new \OC\Files\Node\Folder($root, $view, '/bar/foo');
$result = $node->search('qw');
@@ -404,13 +413,21 @@ class Folder extends \Test\TestCase {
* @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view
*/
$view = $this->getMock('\OC\Files\View');
- $root = $this->getMock('\OC\Files\Node\Root', array('getUser', 'getMountsIn'), array($manager, $view, $this->user));
+ $root = $this->getMock('\OC\Files\Node\Root', array('getUser', 'getMountsIn', 'getMount'), array($manager, $view, $this->user));
$root->expects($this->any())
->method('getUser')
->will($this->returnValue($this->user));
$storage = $this->getMock('\OC\Files\Storage\Storage');
$cache = $this->getMock('\OC\Files\Cache\Cache', array(), array(''));
+ $mount = $this->getMock('\OCP\Files\Mount\IMountPoint');
+ $mount->expects($this->once())
+ ->method('getStorage')
+ ->will($this->returnValue($storage));
+ $mount->expects($this->once())
+ ->method('getInternalPath')
+ ->will($this->returnValue('files'));
+
$storage->expects($this->once())
->method('getCache')
->will($this->returnValue($cache));
@@ -428,9 +445,10 @@ class Folder extends \Test\TestCase {
->with('')
->will($this->returnValue(array()));
- $view->expects($this->once())
- ->method('resolvePath')
- ->will($this->returnValue(array($storage, 'files')));
+ $root->expects($this->once())
+ ->method('getMount')
+ ->with('')
+ ->will($this->returnValue($mount));
$result = $root->search('qw');
$this->assertEquals(1, count($result));
@@ -450,6 +468,14 @@ class Folder extends \Test\TestCase {
$storage = $this->getMock('\OC\Files\Storage\Storage');
$cache = $this->getMock('\OC\Files\Cache\Cache', array(), array(''));
+ $mount = $this->getMock('\OCP\Files\Mount\IMountPoint');
+ $mount->expects($this->once())
+ ->method('getStorage')
+ ->will($this->returnValue($storage));
+ $mount->expects($this->once())
+ ->method('getInternalPath')
+ ->will($this->returnValue(''));
+
$storage->expects($this->once())
->method('getCache')
->will($this->returnValue($cache));
@@ -466,9 +492,10 @@ class Folder extends \Test\TestCase {
->with('/bar')
->will($this->returnValue(array()));
- $view->expects($this->once())
- ->method('resolvePath')
- ->will($this->returnValue(array($storage, '')));
+ $root->expects($this->once())
+ ->method('getMount')
+ ->with('/bar')
+ ->will($this->returnValue($mount));
$node = new \OC\Files\Node\Folder($root, $view, '/bar');
$result = $node->search('qw');
@@ -489,6 +516,14 @@ class Folder extends \Test\TestCase {
$storage = $this->getMock('\OC\Files\Storage\Storage');
$cache = $this->getMock('\OC\Files\Cache\Cache', array(), array(''));
+ $mount = $this->getMock('\OCP\Files\Mount\IMountPoint');
+ $mount->expects($this->once())
+ ->method('getStorage')
+ ->will($this->returnValue($storage));
+ $mount->expects($this->once())
+ ->method('getInternalPath')
+ ->will($this->returnValue('foo'));
+
$storage->expects($this->once())
->method('getCache')
->will($this->returnValue($cache));
@@ -505,9 +540,10 @@ class Folder extends \Test\TestCase {
->with('/bar/foo')
->will($this->returnValue(array()));
- $view->expects($this->once())
- ->method('resolvePath')
- ->will($this->returnValue(array($storage, 'foo')));
+ $root->expects($this->once())
+ ->method('getMount')
+ ->with('/bar/foo')
+ ->will($this->returnValue($mount));
$node = new \OC\Files\Node\Folder($root, $view, '/bar/foo');
$result = $node->searchByTag('tag1', 'user1');
@@ -531,6 +567,14 @@ class Folder extends \Test\TestCase {
$subStorage = $this->getMock('\OC\Files\Storage\Storage');
$subMount = $this->getMock('\OC\Files\Mount\MountPoint', array(), array(null, ''));
+ $mount = $this->getMock('\OCP\Files\Mount\IMountPoint');
+ $mount->expects($this->once())
+ ->method('getStorage')
+ ->will($this->returnValue($storage));
+ $mount->expects($this->once())
+ ->method('getInternalPath')
+ ->will($this->returnValue('foo'));
+
$subMount->expects($this->once())
->method('getStorage')
->will($this->returnValue($subStorage));
@@ -566,9 +610,10 @@ class Folder extends \Test\TestCase {
->with('/bar/foo')
->will($this->returnValue(array($subMount)));
- $view->expects($this->once())
- ->method('resolvePath')
- ->will($this->returnValue(array($storage, 'foo')));
+ $root->expects($this->once())
+ ->method('getMount')
+ ->with('/bar/foo')
+ ->will($this->returnValue($mount));
$node = new \OC\Files\Node\Folder($root, $view, '/bar/foo');
@@ -602,7 +647,7 @@ class Folder extends \Test\TestCase {
$view->expects($this->once())
->method('getFileInfo')
- ->will($this->returnValue(new FileInfo('/bar/foo/qwerty', null, 'qwerty', [], null)));
+ ->will($this->returnValue(new FileInfo('/bar/foo/qwerty', null, 'qwerty', ['mimetype' => 'text/plain'], null)));
$storage->expects($this->once())
->method('getCache')
@@ -684,7 +729,7 @@ class Folder extends \Test\TestCase {
$view->expects($this->any())
->method('getFileInfo')
- ->will($this->returnValue(new FileInfo('/bar/foo/qwerty', null, 'qwerty', [], null)));
+ ->will($this->returnValue(new FileInfo('/bar/foo/qwerty', null, 'qwerty', ['mimetype' => 'plain'], null)));
$storage->expects($this->any())
->method('getCache')