diff --git a/build/integration/data/textfile.txt b/build/integration/data/textfile.txt new file mode 100644 index 0000000000..efffdeff15 --- /dev/null +++ b/build/integration/data/textfile.txt @@ -0,0 +1,3 @@ +This is a testfile. + +Cheers. \ No newline at end of file diff --git a/build/integration/features/bootstrap/Provisioning.php b/build/integration/features/bootstrap/Provisioning.php index 05a8885d96..86d476944f 100644 --- a/build/integration/features/bootstrap/Provisioning.php +++ b/build/integration/features/bootstrap/Provisioning.php @@ -510,6 +510,20 @@ trait Provisioning { PHPUnit_Framework_Assert::assertEquals(200, $this->response->getStatusCode()); } + /** + * @Given user :user has a quota of :quota + */ + public function userHasAQuotaOf($user, $quota) + { + $body = new \Behat\Gherkin\Node\TableNode([ + 0 => ['key', 'quota'], + 1 => ['value', $quota], + ]); + + // method used from BasicStructure trait + $this->sendingToWith("PUT", "/cloud/users/" . $user, $body); + } + /** * @BeforeScenario * @AfterScenario diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php index 567f189c61..8f0f30b377 100644 --- a/build/integration/features/bootstrap/WebDav.php +++ b/build/integration/features/bootstrap/WebDav.php @@ -21,7 +21,7 @@ trait WebDav{ $this->davPath = $davPath; } - public function makeDavRequest($user, $method, $path, $headers){ + public function makeDavRequest($user, $method, $path, $headers, $body = null){ $fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath . "$path"; $client = new GClient(); $options = []; @@ -36,6 +36,11 @@ trait WebDav{ $request->addHeader($key, $value); } } + + if (!is_null($body)) { + $request->setBody($body); + } + return $client->send($request); } @@ -115,7 +120,20 @@ trait WebDav{ } } } - + + /** + * @When User :user uploads file :source to :destination + */ + public function userUploadsAFileTo($user, $source, $destination) + { + $file = \GuzzleHttp\Stream\Stream::factory(fopen($source, 'r')); + try { + $this->response = $this->makeDavRequest($user, "PUT", $destination, [], $file); + } catch (\GuzzleHttp\Exception\ServerException $e) { + // 4xx and 5xx responses cause an exception + $this->response = $e->getResponse(); + } + } } diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature index 16955e2706..56c4d07f0e 100644 --- a/build/integration/features/webdav-related.feature +++ b/build/integration/features/webdav-related.feature @@ -16,6 +16,13 @@ Feature: sharing Then Downloaded content should be "example file for developers" + Scenario: Upload forbidden if quota is 0 + Given using dav path "remote.php/webdav" + And As an "admin" + And user "user0" exists + And user "user0" has a quota of "0" + When User "user0" uploads file "data/textfile.txt" to "/asdf.txt" + Then the HTTP status code should be "507"