diff --git a/build/integration/features/bootstrap/WebDav.php b/build/integration/features/bootstrap/WebDav.php
index 95a05f4ed6f77a7581d99e4f576a2a270c69c27c..b56a1b7d2f6192a1e722d0b5426c1e796397e2dd 100644
--- a/build/integration/features/bootstrap/WebDav.php
+++ b/build/integration/features/bootstrap/WebDav.php
@@ -190,7 +190,7 @@ trait WebDav {
 	 */
 	public function theSingleResponseShouldContainAPropertyWithValue($key, $expectedValue) {
 		$keys = $this->response;
-		if (!isset($keys[$key])) {
+		if (!array_key_exists($key, $keys)) {
 			throw new \Exception("Cannot find property \"$key\" with \"$expectedValue\"");
 		}
 
@@ -200,6 +200,57 @@ trait WebDav {
 		}
 	}
 
+	/**
+	 * @Then the response should contain a share-types property with
+	 */
+	public function theResponseShouldContainAShareTypesPropertyWith($table)
+	{
+		$keys = $this->response;
+		if (!array_key_exists('{http://owncloud.org/ns}share-types', $keys)) {
+			throw new \Exception("Cannot find property \"{http://owncloud.org/ns}share-types\"");
+		}
+
+		$foundTypes = [];
+		$data = $keys['{http://owncloud.org/ns}share-types'];
+		foreach ($data as $item) {
+			if ($item['name'] !== '{http://owncloud.org/ns}share-type') {
+				throw new \Exception('Invalid property found: "' . $item['name'] . '"');
+			}
+
+			$foundTypes[] = $item['value'];
+		}
+
+		foreach ($table->getRows() as $row) {
+			$key = array_search($row[0], $foundTypes);
+			if ($key === false) {
+				throw new \Exception('Expected type ' . $row[0] . ' not found');
+			}
+
+			unset($foundTypes[$key]);
+		}
+
+		if ($foundTypes !== []) {
+			throw new \Exception('Found more share types then specified: ' . $foundTypes);
+		}
+	}
+
+	/**
+	 * @Then the response should contain an empty property :property
+	 * @param string $property
+	 * @throws \Exception
+	 */
+	public function theResponseShouldContainAnEmptyProperty($property) {
+		$properties = $this->response;
+		if (!array_key_exists($property, $properties)) {
+			throw new \Exception("Cannot find property \"$property\"");
+		}
+
+		if ($properties[$property] !== null) {
+			throw new \Exception("Property \"$property\" is not empty");
+		}
+	}
+
+
 	/*Returns the elements of a propfind, $folderDepth requires 1 to see elements without children*/
 	public function listFolder($user, $path, $folderDepth, $properties = null){
 		$fullUrl = substr($this->baseUrl, 0, -4);
diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature
index 019df3436f8a910b3cd9dfc986a845d08543a81a..ee841f9eb5b4e13bb6e54eb797d56cf2671c4ee1 100644
--- a/build/integration/features/webdav-related.feature
+++ b/build/integration/features/webdav-related.feature
@@ -168,3 +168,76 @@ Feature: webdav-related
 		When As an "user0"
 		And Downloading file "/myChunkedFile.txt"
 		Then Downloaded content should be "AAAAABBBBBCCCCC"
+
+	Scenario: A file that is not shared does not have a share-types property
+		Given user "user0" exists
+		And user "user0" created a folder "/test"
+		When as "user0" gets properties of folder "/test" with
+			|{http://owncloud.org/ns}share-types|
+		Then the response should contain an empty property "{http://owncloud.org/ns}share-types"
+
+	Scenario: A file that is shared to a user has a share-types property
+		Given user "user0" exists
+		And user "user1" exists
+		And user "user0" created a folder "/test"
+		And as "user0" creating a share with
+			| path | test |
+			| shareType | 0 |
+			| permissions | 31 |
+			| shareWith | user1 |
+		When as "user0" gets properties of folder "/test" with
+			|{http://owncloud.org/ns}share-types|
+		Then the response should contain a share-types property with
+			| 0 |
+
+	Scenario: A file that is shared to a group has a share-types property
+		Given user "user0" exists
+		And group "group1" exists
+		And user "user0" created a folder "/test"
+		And as "user0" creating a share with
+			| path | test |
+			| shareType | 1 |
+			| permissions | 31 |
+			| shareWith | group1 |
+		When as "user0" gets properties of folder "/test" with
+			|{http://owncloud.org/ns}share-types|
+		Then the response should contain a share-types property with
+			| 1 |
+
+	Scenario: A file that is shared by link has a share-types property
+		Given user "user0" exists
+		And user "user0" created a folder "/test"
+		And as "user0" creating a share with
+			| path | test |
+			| shareType | 3 |
+			| permissions | 31 |
+		When as "user0" gets properties of folder "/test" with
+			|{http://owncloud.org/ns}share-types|
+		Then the response should contain a share-types property with
+			| 3 |
+
+	Scenario: A file that is shared by user,group and link has a share-types property
+		Given user "user0" exists
+		And user "user1" exists
+		And group "group2" exists
+		And user "user0" created a folder "/test"
+		And as "user0" creating a share with
+			| path        | test  |
+			| shareType   | 0     |
+			| permissions | 31    |
+			| shareWith   | user1 |
+		And as "user0" creating a share with
+			| path        | test  |
+			| shareType   | 1     |
+			| permissions | 31    |
+			| shareWith   | group2 |
+		And as "user0" creating a share with
+			| path        | test  |
+			| shareType   | 3     |
+			| permissions | 31    |
+		When as "user0" gets properties of folder "/test" with
+			|{http://owncloud.org/ns}share-types|
+		Then the response should contain a share-types property with
+			| 0 |
+			| 1 |
+			| 3 |