summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-01-21 15:13:37 +0100
committerVincent Petry <pvince81@owncloud.com>2015-01-21 15:14:57 +0100
commit9fbdd1072ed4eac276261f23d855bca2ca932477 (patch)
tree161e01a99f31614752429b6d5fcf81c336335696
parentff5715779c56ceacc870307bf25f4e769ff22a1a (diff)
downloadnextcloud-server-9fbdd1072ed4eac276261f23d855bca2ca932477.tar.gz
nextcloud-server-9fbdd1072ed4eac276261f23d855bca2ca932477.zip
Fix webdav mkdir for remote shares
-rw-r--r--apps/files_sharing/lib/external/cache.php3
-rw-r--r--apps/files_sharing/tests/external/cache.php112
2 files changed, 115 insertions, 0 deletions
diff --git a/apps/files_sharing/lib/external/cache.php b/apps/files_sharing/lib/external/cache.php
index cd06bfb1272..2f5f7a59dbd 100644
--- a/apps/files_sharing/lib/external/cache.php
+++ b/apps/files_sharing/lib/external/cache.php
@@ -28,6 +28,9 @@ class Cache extends \OC\Files\Cache\Cache {
public function get($file) {
$result = parent::get($file);
+ if (!$result) {
+ return false;
+ }
$result['displayname_owner'] = $this->remoteUser . '@' . $this->remote;
if (!$file || $file === '') {
$result['is_share_mount_point'] = true;
diff --git a/apps/files_sharing/tests/external/cache.php b/apps/files_sharing/tests/external/cache.php
new file mode 100644
index 00000000000..6274a0b6390
--- /dev/null
+++ b/apps/files_sharing/tests/external/cache.php
@@ -0,0 +1,112 @@
+<?php
+use OCA\Files_sharing\Tests\TestCase;
+
+/**
+ * ownCloud
+ *
+ * @author Vincent Petry
+ * @copyright 2015 Vincent Petry <pvince81@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
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+class Test_Files_Sharing_External_Cache extends TestCase {
+
+ /**
+ * @var \OC\Files\Storage\Storage
+ **/
+ private $storage;
+
+ /**
+ * @var \OCA\Files_Sharing\External\Cache
+ */
+ private $cache;
+
+ /**
+ * @var string
+ */
+ private $remoteUser;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->remoteUser = $this->getUniqueID('remoteuser');
+
+ $this->storage = $this->getMockBuilder('\OCA\Files_Sharing\External\Storage')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->storage
+ ->expects($this->any())
+ ->method('getId')
+ ->will($this->returnValue('dummystorage::'));
+ $this->cache = new \OCA\Files_Sharing\External\Cache(
+ $this->storage,
+ 'http://example.com/owncloud',
+ $this->remoteUser
+ );
+ $this->cache->put(
+ 'test.txt',
+ array(
+ 'mimetype' => 'text/plain',
+ 'size' => 5,
+ 'mtime' => 123,
+ )
+ );
+ }
+
+ protected function tearDown() {
+ $this->cache->clear();
+ parent::tearDown();
+ }
+
+ public function testGetInjectsOwnerDisplayName() {
+ $info = $this->cache->get('test.txt');
+ $this->assertEquals(
+ $this->remoteUser . '@example.com/owncloud',
+ $info['displayname_owner']
+ );
+ }
+
+ public function testGetReturnsFalseIfNotFound() {
+ $info = $this->cache->get('unexisting-entry.txt');
+ $this->assertFalse($info);
+ }
+
+ public function testGetFolderPopulatesOwner() {
+ $dirId = $this->cache->put(
+ 'subdir',
+ array(
+ 'mimetype' => 'httpd/unix-directory',
+ 'size' => 5,
+ 'mtime' => 123,
+ )
+ );
+ $this->cache->put(
+ 'subdir/contents.txt',
+ array(
+ 'mimetype' => 'text/plain',
+ 'size' => 5,
+ 'mtime' => 123,
+ )
+ );
+
+ $results = $this->cache->getFolderContentsById($dirId);
+ $this->assertEquals(1, count($results));
+ $this->assertEquals(
+ $this->remoteUser . '@example.com/owncloud',
+ $results[0]['displayname_owner']
+ );
+ }
+
+}