From 6f34c37cfbaab73d13ba552d500311431cfd6303 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?=
 <DeepDiver1975@users.noreply.github.com>
Date: Fri, 29 Jul 2016 06:40:39 +0200
Subject: [PATCH] Adding quota plugin to new dav endpoint (#25615)

* Adding quota plugin to new dav endpoint

* Added integrated test failing in old endpoint

* Added 0B quota test
---
 apps/dav/lib/Server.php                       |  3 +++
 .../integration/features/bootstrap/WebDav.php | 16 +++++++++--
 build/integration/features/dav-v2.feature     | 27 +++++++++++++++++++
 3 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php
index e80f9ae125a..9058548489c 100644
--- a/apps/dav/lib/Server.php
+++ b/apps/dav/lib/Server.php
@@ -173,6 +173,9 @@ class Server {
 						)
 					)
 				);
+				$this->server->addPlugin(
+					new \OCA\DAV\Connector\Sabre\QuotaPlugin($view));
+
 			}
 		});
 	}
diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php
index 9b0050d82dd..71f938c7ec4 100644
--- a/build/integration/features/bootstrap/WebDav.php
+++ b/build/integration/features/bootstrap/WebDav.php
@@ -50,6 +50,18 @@ trait WebDav {
 		$this->davPath = $davPath;
 	}
 
+	/**
+	 * @return string
+	 */
+	public function getFilesPath() {
+		if ($this->davPath === 'remote.php/dav') {
+			$basePath = '/files/' . $this->currentUser . '/';
+		} else {
+			$basePath = '/';
+		}
+		return $basePath;
+	}
+
 	public function makeDavRequest($user, $method, $path, $headers, $body = null){
 		$fullUrl = substr($this->baseUrl, 0, -4) . $this->davPath . "$path";
 		$client = new GClient();
@@ -413,9 +425,9 @@ trait WebDav {
 	 * @param string $user
 	 * @param string $destination
 	 */
-	public function userCreatedAFolder($user, $destination){
+	public function userCreatedAFolder($user, $destination) {
 		try {
-			$this->response = $this->makeDavRequest($user, "MKCOL", $destination, []);
+			$this->response = $this->makeDavRequest($user, "MKCOL", $this->getFilesPath() . ltrim($destination, $this->getFilesPath()), []);
 		} catch (\GuzzleHttp\Exception\ServerException $e) {
 			// 4xx and 5xx responses cause an exception
 			$this->response = $e->getResponse();
diff --git a/build/integration/features/dav-v2.feature b/build/integration/features/dav-v2.feature
index 2b3aeff9454..a57b7f26c43 100644
--- a/build/integration/features/dav-v2.feature
+++ b/build/integration/features/dav-v2.feature
@@ -53,3 +53,30 @@ Feature: dav-v2
 		Given Logging in using web as "admin"
 		When Sending a "PROPFIND" to "/remote.php/dav/files/admin/welcome.txt" with requesttoken
 		Then the HTTP status code should be "207"
+
+	Scenario: Uploading a file having 0B as quota
+		Given using dav path "remote.php/dav"
+		And As an "admin"
+		And user "user0" exists
+		And user "user0" has a quota of "0 B"
+		And As an "user0"
+		When User "user0" uploads file "data/textfile.txt" to "/files/user0/asdf.txt"
+		Then the HTTP status code should be "507"
+
+	Scenario: Uploading a file as recipient using webdav new endpoint having quota
+		Given using dav path "remote.php/dav"
+		And As an "admin"
+		And user "user0" exists
+		And user "user1" exists
+		And user "user0" has a quota of "10 MB"
+		And user "user1" has a quota of "10 MB"
+		And As an "user1"
+		And user "user1" created a folder "/testquota"
+		And as "user1" creating a share with
+		  | path | testquota |
+		  | shareType | 0 |
+		  | permissions | 31 |
+		  | shareWith | user0 |
+		And As an "user0"
+		When User "user0" uploads file "data/textfile.txt" to "/files/user0/testquota/asdf.txt"
+		Then the HTTP status code should be "201"
-- 
GitLab