]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix webdav put for single file webdav shares
authorRobin Appelman <icewind@owncloud.com>
Mon, 26 Jan 2015 16:48:28 +0000 (17:48 +0100)
committerRobin Appelman <icewind@owncloud.com>
Thu, 29 Jan 2015 11:47:12 +0000 (12:47 +0100)
lib/private/connector/sabre/file.php
tests/lib/connector/sabre/file.php

index 0f5a3315f8f7acad27a54f00e5263e5f4e943158..12ce633838f8c13af7bbdb875704ee0ffb907649 100644 (file)
@@ -64,7 +64,7 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\
                        throw new \Sabre\DAV\Exception\ServiceUnavailable("Encryption is disabled");
                }
 
-               $fileName = basename($this->path);
+               $fileName = basename($this->info->getPath());
                if (!\OCP\Util::isValidFileName($fileName)) {
                        throw new \Sabre\DAV\Exception\BadRequest();
                }
@@ -74,8 +74,8 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\
                        return $this->createFileChunked($data);
                }
 
-               list($storage, ) = $this->fileView->resolvePath($this->path);
-               $needsPartFile = $this->needsPartFile($storage);
+               list($storage,) = $this->fileView->resolvePath($this->path);
+               $needsPartFile = $this->needsPartFile($storage) && (strlen($this->path) > 1);
 
                if ($needsPartFile) {
                        // mark file as partial while uploading (ignored by the scanner)
index 6bb1b4e75d1c115c9bddc7be184290fccb89e0ce..33dc78f87d8a7bcb5ba08b2a7dd68f70bdabc8c3 100644 (file)
@@ -32,6 +32,31 @@ class Test_OC_Connector_Sabre_File extends \Test\TestCase {
                $file->put('test data');
        }
 
+       public function testPutSingleFileShare() {
+               // setup
+               $storage = $this->getMock('\OCP\Files\Storage');
+               $view = $this->getMock('\OC\Files\View', array('file_put_contents', 'getRelativePath'), array());
+               $view->expects($this->any())
+                       ->method('resolvePath')
+                       ->with('')
+                       ->will($this->returnValue(array($storage, '')));
+               $view->expects($this->any())
+                       ->method('getRelativePath')
+                       ->will($this->returnValue(''));
+               $view->expects($this->any())
+                       ->method('file_put_contents')
+                       ->with('')
+                       ->will($this->returnValue(true));
+
+               $info = new \OC\Files\FileInfo('/foo.txt', null, null, array(
+                       'permissions' => \OCP\Constants::PERMISSION_ALL
+               ), null);
+
+               $file = new OC_Connector_Sabre_File($view, $info);
+
+               $this->assertNotEmpty($file->put('test data'));
+       }
+
        /**
         * @expectedException \Sabre\DAV\Exception
         */