summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2015-09-14 15:34:28 +0200
committerRobin Appelman <icewind@owncloud.com>2015-09-16 12:59:15 +0200
commit953b64f3f2ee919243e737d4f5f775c32954c30e (patch)
tree04663ab55836292ff9d889c2dc8fabcf965c4385 /tests
parent41e79675c3f2409df13a2b06f0ad9d55fa0ec5ad (diff)
downloadnextcloud-server-953b64f3f2ee919243e737d4f5f775c32954c30e.tar.gz
nextcloud-server-953b64f3f2ee919243e737d4f5f775c32954c30e.zip
Add tests for downloading files over dav
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/connector/sabre/requesttest/downloadtest.php52
-rw-r--r--tests/lib/connector/sabre/requesttest/sapi.php10
2 files changed, 61 insertions, 1 deletions
diff --git a/tests/lib/connector/sabre/requesttest/downloadtest.php b/tests/lib/connector/sabre/requesttest/downloadtest.php
new file mode 100644
index 00000000000..67dd9f52308
--- /dev/null
+++ b/tests/lib/connector/sabre/requesttest/downloadtest.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace Test\Connector\Sabre\RequestTest;
+
+use OCP\AppFramework\Http;
+use OCP\Lock\ILockingProvider;
+
+class DownloadTest extends RequestTest {
+ public function testDownload() {
+ $user = $this->getUniqueID();
+ $view = $this->setupUser($user, 'pass');
+
+ $view->file_put_contents('foo.txt', 'bar');
+
+ $response = $this->request($view, $user, 'pass', 'GET', '/foo.txt');
+ $this->assertEquals(Http::STATUS_OK, $response->getStatus());
+ $this->assertEquals(stream_get_contents($response->getBody()), 'bar');
+ }
+
+ /**
+ * @expectedException \OC\Connector\Sabre\Exception\FileLocked
+ */
+ public function testDownloadWriteLocked() {
+ $user = $this->getUniqueID();
+ $view = $this->setupUser($user, 'pass');
+
+ $view->file_put_contents('foo.txt', 'bar');
+
+ $view->lockFile('/foo.txt', ILockingProvider::LOCK_EXCLUSIVE);
+
+ $this->request($view, $user, 'pass', 'GET', '/foo.txt', 'asd');
+ }
+
+ public function testDownloadReadLocked() {
+ $user = $this->getUniqueID();
+ $view = $this->setupUser($user, 'pass');
+
+ $view->file_put_contents('foo.txt', 'bar');
+
+ $view->lockFile('/foo.txt', ILockingProvider::LOCK_SHARED);
+
+ $response = $this->request($view, $user, 'pass', 'GET', '/foo.txt', 'asd');
+ $this->assertEquals(Http::STATUS_OK, $response->getStatus());
+ $this->assertEquals(stream_get_contents($response->getBody()), 'bar');
+ }
+}
diff --git a/tests/lib/connector/sabre/requesttest/sapi.php b/tests/lib/connector/sabre/requesttest/sapi.php
index 7072b8bd286..eda5d738f6f 100644
--- a/tests/lib/connector/sabre/requesttest/sapi.php
+++ b/tests/lib/connector/sabre/requesttest/sapi.php
@@ -41,7 +41,15 @@ class Sapi {
* @return void
*/
public function sendResponse(Response $response) {
- $this->response = $response;
+ // we need to copy the body since we close the source stream
+ $copyStream = fopen('php://temp', 'r+');
+ if (is_string($response->getBody())) {
+ fwrite($copyStream, $response->getBody());
+ } else {
+ stream_copy_to_stream($response->getBody(), $copyStream);
+ }
+ rewind($copyStream);
+ $this->response = new Response($response->getStatus(), $response->getHeaders(), $copyStream);
}
/**