Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2014-02-06 13:06:20 +0400
committerBjoern Schiessle <schiessle@owncloud.com>2014-02-21 18:53:03 +0400
commit210832ddf149ac893720d5ee2ad9544fca97a79b (patch)
tree7a7c5542c9dced3f35424bb475b3d82b0d11ed35
parent96ebefc5977b4401a4f8be9a6d2c483ae50f05f4 (diff)
fix usersPath and add unit tests
-rw-r--r--apps/files_sharing/lib/cache.php12
-rw-r--r--apps/files_sharing/tests/cache.php108
2 files changed, 110 insertions, 10 deletions
diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
index 1b102f9e5f8..0bff28e6409 100644
--- a/apps/files_sharing/lib/cache.php
+++ b/apps/files_sharing/lib/cache.php
@@ -128,19 +128,15 @@ class Shared_Cache extends Cache {
foreach ($files as &$file) {
$file['mimetype'] = $this->getMimetype($file['mimetype']);
$file['mimepart'] = $this->getMimetype($file['mimepart']);
+ $file['usersPath'] = 'files/Shared/' . ltrim($file['path'], '/');
}
return $files;
} else {
- if ($cache = $this->getSourceCache($folder)) {
+ $cache = $this->getSourceCache($folder);
+ if ($cache) {
$sourceFolderContent = $cache->getFolderContents($this->files[$folder]);
foreach ($sourceFolderContent as $key => $c) {
- $ownerPathParts = explode('/', \OC_Filesystem::normalizePath($c['path']));
- $userPathParts = explode('/', \OC_Filesystem::normalizePath($folder));
- $usersPath = 'files/Shared/'.$userPathParts[1];
- foreach (array_slice($ownerPathParts, 3) as $part) {
- $usersPath .= '/'.$part;
- }
- $sourceFolderContent[$key]['usersPath'] = $usersPath;
+ $sourceFolderContent[$key]['usersPath'] = 'files/Shared/' . $folder . '/' . $c['name'];
}
return $sourceFolderContent;
diff --git a/apps/files_sharing/tests/cache.php b/apps/files_sharing/tests/cache.php
index 56a51c83f6b..5e61eb86dd7 100644
--- a/apps/files_sharing/tests/cache.php
+++ b/apps/files_sharing/tests/cache.php
@@ -2,8 +2,9 @@
/**
* ownCloud
*
- * @author Vincent Petry
+ * @author Vincent Petry, Bjoern Schiessle
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
+ * 2014 Bjoern Schiessle <schiessle@owncloud.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
@@ -23,13 +24,19 @@ require_once __DIR__ . '/base.php';
class Test_Files_Sharing_Cache extends Test_Files_Sharing_Base {
+ /**
+ * @var OC_FilesystemView
+ */
+ public $user2View;
+
function setUp() {
parent::setUp();
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
+ $this->user2View = new \OC\Files\View('/'. self::TEST_FILES_SHARING_API_USER2 . '/files');
+
// prepare user1's dir structure
- $textData = "dummy file data\n";
$this->view->mkdir('container');
$this->view->mkdir('container/shareddir');
$this->view->mkdir('container/shareddir/subdir');
@@ -115,6 +122,103 @@ class Test_Files_Sharing_Cache extends Test_Files_Sharing_Base {
$this->verifyFiles($check, $results);
}
+ function testGetFolderContentsInRoot() {
+ $results = $this->user2View->getDirectoryContent('/Shared/');
+
+ $this->verifyFiles(
+ array(
+ array(
+ 'name' => 'shareddir',
+ 'path' => '/shareddir',
+ 'mimetype' => 'httpd/unix-directory',
+ 'usersPath' => 'files/Shared/shareddir'
+ ),
+ array(
+ 'name' => 'shared single file.txt',
+ 'path' => '/shared single file.txt',
+ 'mimetype' => 'text/plain',
+ 'usersPath' => 'files/Shared/shared single file.txt'
+ ),
+ ),
+ $results
+ );
+ }
+
+ function testGetFolderContentsInSubdir() {
+ //$results = $this->sharedStorage->getCache()->getFolderContents('shareddir');
+ $results = $this->user2View->getDirectoryContent('/Shared/shareddir');
+
+ $this->verifyFiles(
+ array(
+ array(
+ 'name' => 'bar.txt',
+ 'path' => 'files/container/shareddir/bar.txt',
+ 'mimetype' => 'text/plain',
+ 'usersPath' => 'files/Shared/shareddir/bar.txt'
+ ),
+ array(
+ 'name' => 'emptydir',
+ 'path' => 'files/container/shareddir/emptydir',
+ 'mimetype' => 'httpd/unix-directory',
+ 'usersPath' => 'files/Shared/shareddir/emptydir'
+ ),
+ array(
+ 'name' => 'subdir',
+ 'path' => 'files/container/shareddir/subdir',
+ 'mimetype' => 'httpd/unix-directory',
+ 'usersPath' => 'files/Shared/shareddir/subdir'
+ ),
+ ),
+ $results
+ );
+ }
+
+ function testGetFolderContentsWhenSubSubdirShared() {
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
+
+ $fileinfo = $this->view->getFileInfo('container/shareddir/subdir');
+ \OCP\Share::shareItem('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
+ self::TEST_FILES_SHARING_API_USER3, 31);
+
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER3);
+
+ $thirdView = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER3 . '/files');
+ //list($this->sharedStorage, $internalPath) = $thirdView->resolvePath('files/Shared');
+ $results = $thirdView->getDirectoryContent('/Shared/subdir');
+
+ $this->verifyFiles(
+ array(
+ array(
+ 'name' => 'another too.txt',
+ 'path' => 'files/container/shareddir/subdir/another too.txt',
+ //'path' => '/subdir/another too.txt',
+ 'mimetype' => 'text/plain',
+ 'usersPath' => 'files/Shared/subdir/another too.txt'
+ ),
+ array(
+ 'name' => 'another.txt',
+ 'path' => 'files/container/shareddir/subdir/another.txt',
+ //'path' => '/subdir/another.txt',
+ 'mimetype' => 'text/plain',
+ 'usersPath' => 'files/Shared/subdir/another.txt'
+ ),
+ array(
+ 'name' => 'not a text file.xml',
+ 'path' => 'files/container/shareddir/subdir/not a text file.xml',
+ //'path' => '/subdir/not a text file.xml',
+ 'mimetype' => 'application/xml',
+ 'usersPath' => 'files/Shared/subdir/not a text file.xml'
+ ),
+ ),
+ $results
+ );
+
+ self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
+
+ \OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER,
+ self::TEST_FILES_SHARING_API_USER3);
+ }
+
/**
* Checks that all provided attributes exist in the files list,
* only the values provided in $examples will be used to check against