summaryrefslogtreecommitdiffstats
path: root/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php')
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php85
1 files changed, 83 insertions, 2 deletions
diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
index 282a5b2f626..43ca119abff 100644
--- a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php
@@ -123,7 +123,7 @@ class FilesPluginTest extends TestCase {
* @param string $class
* @return \PHPUnit_Framework_MockObject_MockObject
*/
- private function createTestNode($class) {
+ private function createTestNode($class, $path = '/dummypath') {
$node = $this->getMockBuilder($class)
->disableOriginalConstructor()
->getMock();
@@ -134,7 +134,7 @@ class FilesPluginTest extends TestCase {
$this->tree->expects($this->any())
->method('getNodeForPath')
- ->with('/dummypath')
+ ->with($path)
->will($this->returnValue($node));
$node->expects($this->any())
@@ -547,4 +547,85 @@ class FilesPluginTest extends TestCase {
$this->assertEquals("false", $propFind->get(self::HAS_PREVIEW_PROPERTYNAME));
}
+
+ public function postCreateFileProvider() {
+ $baseUrl = 'http://example.com/owncloud/remote.php/webdav/subdir/';
+ return [
+ ['test.txt', 'some file.txt', 'some file.txt', $baseUrl . 'some%20file.txt'],
+ ['some file.txt', 'some file.txt', 'some file (2).txt', $baseUrl . 'some%20file%20%282%29.txt'],
+ ];
+ }
+
+ /**
+ * @dataProvider postCreateFileProvider
+ */
+ public function testPostWithAddMember($existingFile, $wantedName, $deduplicatedName, $expectedLocation) {
+ $request = $this->getMock('Sabre\HTTP\RequestInterface');
+ $response = $this->getMock('Sabre\HTTP\ResponseInterface');
+
+ $request->expects($this->any())
+ ->method('getUrl')
+ ->will($this->returnValue('http://example.com/owncloud/remote.php/webdav/subdir/&' . $wantedName));
+
+ $request->expects($this->any())
+ ->method('getPath')
+ ->will($this->returnValue('/subdir/&' . $wantedName));
+
+ $request->expects($this->once())
+ ->method('getBodyAsStream')
+ ->will($this->returnValue(fopen('data://text/plain,hello', 'r')));
+
+ $this->view->expects($this->any())
+ ->method('file_exists')
+ ->will($this->returnCallback(function($path) use ($existingFile) {
+ return ($path === '/subdir/' . $existingFile);
+ }));
+
+ $node = $this->createTestNode('\OCA\DAV\Connector\Sabre\Directory', '/subdir');
+
+ $node->expects($this->once())
+ ->method('createFile')
+ ->with($deduplicatedName, $this->isType('resource'));
+
+ $response->expects($this->once())
+ ->method('setStatus')
+ ->with(201);
+ $response->expects($this->once())
+ ->method('setHeader')
+ ->with('Content-Location', $expectedLocation);
+
+ $this->assertFalse($this->plugin->httpPost($request, $response));
+ }
+
+ public function testPostOnNonDirectory() {
+ $request = $this->getMock('Sabre\HTTP\RequestInterface');
+ $response = $this->getMock('Sabre\HTTP\ResponseInterface');
+
+ $request->expects($this->any())
+ ->method('getPath')
+ ->will($this->returnValue('/subdir/test.txt/&abc'));
+
+ $this->createTestNode('\OCA\DAV\Connector\Sabre\File', '/subdir/test.txt');
+
+ $this->assertNull($this->plugin->httpPost($request, $response));
+ }
+
+ /**
+ * @expectedException \Sabre\DAV\Exception\BadRequest
+ */
+ public function testPostWithoutAddMember() {
+ $request = $this->getMock('Sabre\HTTP\RequestInterface');
+ $response = $this->getMock('Sabre\HTTP\ResponseInterface');
+
+ $request->expects($this->any())
+ ->method('getPath')
+ ->will($this->returnValue('/subdir/&'));
+
+ $node = $this->createTestNode('\OCA\DAV\Connector\Sabre\Directory', '/subdir');
+
+ $node->expects($this->never())
+ ->method('createFile');
+
+ $this->plugin->httpPost($request, $response);
+ }
}