]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix webdav mkdir for remote shares
authorVincent Petry <pvince81@owncloud.com>
Wed, 21 Jan 2015 14:13:37 +0000 (15:13 +0100)
committerVincent Petry <pvince81@owncloud.com>
Wed, 21 Jan 2015 14:14:57 +0000 (15:14 +0100)
apps/files_sharing/lib/external/cache.php
apps/files_sharing/tests/external/cache.php [new file with mode: 0644]

index cd06bfb12724ca3dd3098a0281ada1707cd123d7..2f5f7a59dbdbac9efdba17aea1807445f0242599 100644 (file)
@@ -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 (file)
index 0000000..6274a0b
--- /dev/null
@@ -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']
+               );
+       }
+
+}