summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/files_sharing/lib/cache.php4
-rw-r--r--apps/files_sharing/tests/permissions.php50
2 files changed, 44 insertions, 10 deletions
diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
index b2594aa0b4d..7a6b70d82b5 100644
--- a/apps/files_sharing/lib/cache.php
+++ b/apps/files_sharing/lib/cache.php
@@ -95,7 +95,7 @@ class Shared_Cache extends Cache {
}
$data['uid_owner'] = $this->storage->getOwner($file);
if (isset($data['permissions'])) {
- $data['permissions'] = $data['permissions'] & $this->storage->getPermissions('');
+ $data['permissions'] &= $this->storage->getPermissions('');
} else {
$data['permissions'] = $this->storage->getPermissions('');
}
@@ -135,7 +135,7 @@ class Shared_Cache extends Cache {
$data['name'] = basename($this->storage->getMountPoint());
$data['is_share_mount_point'] = true;
}
- $data['permissions'] = $data['permissions'] & $this->storage->getPermissions('');
+ $data['permissions'] &= $this->storage->getPermissions('');
return $data;
}
return false;
diff --git a/apps/files_sharing/tests/permissions.php b/apps/files_sharing/tests/permissions.php
index 0a222b08512..2cbc412d261 100644
--- a/apps/files_sharing/tests/permissions.php
+++ b/apps/files_sharing/tests/permissions.php
@@ -19,13 +19,49 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
+use OC\Files\Cache\Cache;
+use OC\Files\Storage\Storage;
+use OC\Files\View;
+
require_once __DIR__ . '/base.php';
class Test_Files_Sharing_Permissions extends Test_Files_Sharing_Base {
+ /**
+ * @var Storage
+ */
private $sharedStorageRestrictedShare;
+
+ /**
+ * @var Storage
+ */
private $sharedCacheRestrictedShare;
+ /**
+ * @var View
+ */
+ private $secondView;
+
+ /**
+ * @var Storage
+ */
+ private $ownerStorage;
+
+ /**
+ * @var Storage
+ */
+ private $sharedStorage;
+
+ /**
+ * @var Cache
+ */
+ private $sharedCache;
+
+ /**
+ * @var Cache
+ */
+ private $ownerCache;
+
function setUp() {
parent::setUp();
@@ -105,16 +141,14 @@ class Test_Files_Sharing_Permissions extends Test_Files_Sharing_Base {
$this->assertEquals('subdir', $contents[0]['name']);
$this->assertEquals(31, $contents[0]['permissions']);
$this->assertEquals('textfile.txt', $contents[1]['name']);
- $this->assertEquals(31, $contents[1]['permissions']);
+ // 27 is correct because create is reserved to folders only - requires more unit tests overall to ensure this
+ $this->assertEquals(27, $contents[1]['permissions']);
$contents = $this->secondView->getDirectoryContent('files/shareddirrestricted');
$this->assertEquals('subdir', $contents[0]['name']);
- $this->assertEquals(7, $contents[0]['permissions']);
+ $this->assertEquals(7 | \OCP\PERMISSION_DELETE, $contents[0]['permissions']);
$this->assertEquals('textfile1.txt', $contents[1]['name']);
- $this->assertEquals(7, $contents[1]['permissions']);
-
- // the share mount point should always have delete permissions to allow the user
- // to unmount it
- $restrictedShare = $this->secondView->getFileInfo('files/shareddirrestricted');
- $this->assertEquals(7 | \OCP\PERMISSION_DELETE, $restrictedShare['permissions']);
+ // 3 is correct because create is reserved to folders only
+ // delete permissions are added since mount points can always be deleted
+ $this->assertEquals(3 | \OCP\PERMISSION_DELETE, $contents[1]['permissions']);
}
}