diff options
author | Robin Appelman <icewind@owncloud.com> | 2015-09-14 15:34:28 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2015-09-16 12:59:15 +0200 |
commit | 953b64f3f2ee919243e737d4f5f775c32954c30e (patch) | |
tree | 04663ab55836292ff9d889c2dc8fabcf965c4385 /tests | |
parent | 41e79675c3f2409df13a2b06f0ad9d55fa0ec5ad (diff) | |
download | nextcloud-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.php | 52 | ||||
-rw-r--r-- | tests/lib/connector/sabre/requesttest/sapi.php | 10 |
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); } /** |