test: fix tests and issue tags

test: fix properties namespace
This commit is contained in:
Saw-jan
2024-08-02 09:31:26 +05:45
parent d8c74a30a2
commit f976386ee2
6 changed files with 54 additions and 70 deletions
+3 -3
View File
@@ -146,7 +146,7 @@ class WebDavHelper {
$property = $propertyParts[1]; $property = $propertyParts[1];
} }
if ($namespacePrefix){ if ($namespacePrefix) {
$propertyBody .= "<$namespacePrefix:$property/>"; $propertyBody .= "<$namespacePrefix:$property/>";
} else { } else {
$propertyBody .= "<$property/>"; $propertyBody .= "<$property/>";
@@ -418,7 +418,7 @@ class WebDavHelper {
):ResponseInterface { ):ResponseInterface {
if (!$properties) { if (!$properties) {
$properties = [ $properties = [
'getetag', 'resourcetype' 'd:getetag', 'd:resourcetype'
]; ];
} }
return self::propfind( return self::propfind(
@@ -940,7 +940,7 @@ class WebDavHelper {
$user, $user,
$password, $password,
$resource, $resource,
["getlastmodified"], ["d:getlastmodified"],
$xRequestId, $xRequestId,
"0", "0",
"files", "files",
@@ -8,16 +8,21 @@ Basic file management like up and download, move, copy, properties, trash, versi
#### [COPY a folder to received share file/folder seems to work but no change in shares](https://github.com/owncloud/ocis/issues/6999) #### [COPY a folder to received share file/folder seems to work but no change in shares](https://github.com/owncloud/ocis/issues/6999)
- [coreApiWebdavProperties/copyFile.feature:261](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L261) - [coreApiWebdavProperties/copyFile.feature:284](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L284)
- [coreApiWebdavProperties/copyFile.feature:262](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L262) - [coreApiWebdavProperties/copyFile.feature:285](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L285)
- [coreApiWebdavProperties/copyFile.feature:308](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L308)
- [coreApiWebdavProperties/copyFile.feature:309](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L309)
- [coreApiWebdavProperties/copyFile.feature:482](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L482)
- [coreApiWebdavProperties/copyFile.feature:483](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L483)
- [coreApiWebdavProperties/copyFile.feature:484](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L484)
#### [Custom dav properties with namespaces are rendered incorrectly](https://github.com/owncloud/ocis/issues/2140) #### [Custom dav properties with namespaces are rendered incorrectly](https://github.com/owncloud/ocis/issues/2140)
_ocdav: double-check the webdav property parsing when custom namespaces are used_ _ocdav: double-check the webdav property parsing when custom namespaces are used_
- [coreApiWebdavProperties/setFileProperties.feature:120](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/setFileProperties.feature#L120) - [coreApiWebdavProperties/setFileProperties.feature:128](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/setFileProperties.feature#L128)
- [coreApiWebdavProperties/setFileProperties.feature:121](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/setFileProperties.feature#L121) - [coreApiWebdavProperties/setFileProperties.feature:129](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/setFileProperties.feature#L129)
- [coreApiWebdavProperties/setFileProperties.feature:122](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/setFileProperties.feature#L122) - [coreApiWebdavProperties/setFileProperties.feature:130](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/setFileProperties.feature#L130)
#### [Cannot set custom webDav properties](https://github.com/owncloud/product/issues/264) #### [Cannot set custom webDav properties](https://github.com/owncloud/product/issues/264)
@@ -187,14 +192,11 @@ And other missing implementation of favorites
#### [copying the file inside Shares folder returns 412](https://github.com/owncloud/ocis/issues/3874) #### [copying the file inside Shares folder returns 412](https://github.com/owncloud/ocis/issues/3874)
- [coreApiWebdavProperties/copyFile.feature:408](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L408)
- [coreApiWebdavProperties/copyFile.feature:409](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L409)
- [coreApiWebdavProperties/copyFile.feature:410](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L410)
- [coreApiWebdavProperties/copyFile.feature:435](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L435)
- [coreApiWebdavProperties/copyFile.feature:436](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L436)
- [coreApiWebdavProperties/copyFile.feature:437](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L437)
- [coreApiWebdavProperties/copyFile.feature:238](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L238) - [coreApiWebdavProperties/copyFile.feature:238](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L238)
- [coreApiWebdavProperties/copyFile.feature:239](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L239) - [coreApiWebdavProperties/copyFile.feature:239](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L239)
- [coreApiWebdavProperties/copyFile.feature:455](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L455)
- [coreApiWebdavProperties/copyFile.feature:456](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L456)
- [coreApiWebdavProperties/copyFile.feature:457](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L457)
### Won't fix ### Won't fix
@@ -192,33 +192,6 @@ class FavoritesContext implements Context {
$this->asUserFileOrFolderShouldBeFavorited($user, $path, 0); $this->asUserFileOrFolderShouldBeFavorited($user, $path, 0);
} }
/**
* @Then /^as the user (?:file|folder|entry) "([^"]*)" should be favorited$/
*
* @param string $path
* @param integer $expectedValue 0|1
*
* @return void
*/
public function asTheUserFileOrFolderShouldBeFavorited(string $path, int $expectedValue = 1):void {
$this->asUserFileOrFolderShouldBeFavorited(
$this->featureContext->getCurrentUser(),
$path,
$expectedValue
);
}
/**
* @Then /^as the user (?:file|folder|entry) "([^"]*)" should not be favorited$/
*
* @param string $path
*
* @return void
*/
public function asTheUserFileOrFolderShouldNotBeFavorited(string $path):void {
$this->asTheUserFileOrFolderShouldBeFavorited($path, 0);
}
/** /**
* Set the elements of a proppatch * Set the elements of a proppatch
* *
@@ -315,7 +315,7 @@ class FilesVersionsContext implements Context {
$user = $this->featureContext->getActualUsername($user); $user = $this->featureContext->getActualUsername($user);
$fileId = $this->featureContext->getFileIdForPath($user, $path); $fileId = $this->featureContext->getFileIdForPath($user, $path);
Assert::assertNotNull($fileId, __METHOD__ . " fileid of file $path user $user not found (the file may not exist)"); Assert::assertNotNull($fileId, __METHOD__ . " fileid of file $path user $user not found (the file may not exist)");
$response = $this->listVersionFolder($user, $fileId, 1, ['getcontentlength']); $response = $this->listVersionFolder($user, $fileId, 1, ['d:getcontentlength']);
$responseXml = HttpRequestHelper::getResponseXml( $responseXml = HttpRequestHelper::getResponseXml(
$response, $response,
__METHOD__ __METHOD__
@@ -504,7 +504,7 @@ class FilesVersionsContext implements Context {
):ResponseInterface { ):ResponseInterface {
if (!$properties) { if (!$properties) {
$properties = [ $properties = [
'getetag' 'd:getetag'
]; ];
} }
$user = $this->featureContext->getActualUsername($user); $user = $this->featureContext->getActualUsername($user);
@@ -213,15 +213,15 @@ class WebDavPropertiesContext implements Context {
$user = $this->featureContext->getActualUsername($user); $user = $this->featureContext->getActualUsername($user);
$properties = [$propertyName]; $properties = [$propertyName];
$response = WebDavHelper::propfind( $response = WebDavHelper::propfind(
$this->featureContext->getBaseUrl(), $this->featureContext->getBaseUrl(),
$this->featureContext->getActualUsername($user), $this->featureContext->getActualUsername($user),
$this->featureContext->getUserPassword($user), $this->featureContext->getUserPassword($user),
$path, $path,
$properties, $properties,
$this->featureContext->getStepLineRef(), $this->featureContext->getStepLineRef(),
"0", "0",
"files", "files",
$this->featureContext->getDavPathVersion() $this->featureContext->getDavPathVersion()
); );
$this->featureContext->setResponse($response); $this->featureContext->setResponse($response);
} }
@@ -248,15 +248,15 @@ class WebDavPropertiesContext implements Context {
$namespace => $propertyName $namespace => $propertyName
]; ];
$response = WebDavHelper::propfind( $response = WebDavHelper::propfind(
$this->featureContext->getBaseUrl(), $this->featureContext->getBaseUrl(),
$this->featureContext->getActualUsername($user), $this->featureContext->getActualUsername($user),
$this->featureContext->getUserPassword($user), $this->featureContext->getUserPassword($user),
$path, $path,
$properties, $properties,
$this->featureContext->getStepLineRef(), $this->featureContext->getStepLineRef(),
"0", "0",
"files", "files",
$this->featureContext->getDavPathVersion() $this->featureContext->getDavPathVersion()
); );
$this->featureContext->setResponse($response); $this->featureContext->setResponse($response);
} }
@@ -645,14 +645,12 @@ class WebDavPropertiesContext implements Context {
public function checkResponseContainsProperty(ResponseInterface $response, string $key, string $namespaceString = null): SimpleXMLElement { public function checkResponseContainsProperty(ResponseInterface $response, string $key, string $namespaceString = null): SimpleXMLElement {
$xmlPart = $this->featureContext->getResponseXml($response); $xmlPart = $this->featureContext->getResponseXml($response);
$nsPrefix = "";
if ($namespaceString !== null) { if ($namespaceString !== null) {
$ns = $this->parseNamespace($namespaceString); $ns = $this->parseNamespace($namespaceString);
$xmlPart->registerXPathNamespace( $xmlPart->registerXPathNamespace(
$ns->prefix, $ns->prefix,
$ns->namespace $ns->namespace
); );
$nsPrefix = $ns->prefix . ":";
} }
$match = $xmlPart->xpath("//d:prop/$key"); $match = $xmlPart->xpath("//d:prop/$key");
@@ -661,9 +659,12 @@ class WebDavPropertiesContext implements Context {
isset($match[0]), isset($match[0]),
"Cannot find property \"$key\"" "Cannot find property \"$key\""
); );
$property = \explode(":", $key);
$propertyName = $property[\count($property) - 1];
Assert::assertEquals( Assert::assertEquals(
$nsPrefix.$match[0]->getName(), $match[0]->getName(),
$key $propertyName
); );
return $match[0]; return $match[0];
} }
@@ -1176,7 +1177,7 @@ class WebDavPropertiesContext implements Context {
$storePath = $path; $storePath = $path;
} }
$user = $this->featureContext->getActualUsername($user); $user = $this->featureContext->getActualUsername($user);
$propertiesTable = new TableNode([['propertyName'],['getetag']]); $propertiesTable = new TableNode([['propertyName'],['d:getetag']]);
$response = $this->getPropertiesOfFolder( $response = $this->getPropertiesOfFolder(
$user, $user,
$path, $path,
@@ -1322,7 +1323,7 @@ class WebDavPropertiesContext implements Context {
*/ */
public function getCurrentEtagOfElement(string $path, string $user):string { public function getCurrentEtagOfElement(string $path, string $user):string {
$user = $this->featureContext->getActualUsername($user); $user = $this->featureContext->getActualUsername($user);
$propertiesTable = new TableNode([['propertyName'],['getetag']]); $propertiesTable = new TableNode([['propertyName'],['d:getetag']]);
$response = $this->getPropertiesOfFolder( $response = $this->getPropertiesOfFolder(
$user, $user,
$path, $path,
@@ -14,9 +14,17 @@ Feature: set file properties
When user "Alice" sets property "very-custom-prop" of file "testcustomprop.txt" to "veryCustomPropValue" When user "Alice" sets property "very-custom-prop" of file "testcustomprop.txt" to "veryCustomPropValue"
Then the HTTP status code should be "207" Then the HTTP status code should be "207"
And the xml response should contain a property "very-custom-prop" And the xml response should contain a property "very-custom-prop"
And the content in the response should include the following content:
"""
<d:prop><very-custom-prop></very-custom-prop></d:prop>
"""
When user "Alice" gets a custom property "very-custom-prop" of file "testcustomprop.txt" When user "Alice" gets a custom property "very-custom-prop" of file "testcustomprop.txt"
Then the HTTP status code should be "207" Then the HTTP status code should be "207"
And the response should contain a custom "very-custom-prop" property with value "veryCustomPropValue" And the response should contain a custom "very-custom-prop" property with value "veryCustomPropValue"
And the content in the response should include the following content:
"""
<d:prop><very-custom-prop>veryCustomPropValue</very-custom-prop></d:prop>
"""
Examples: Examples:
| dav-path-version | | dav-path-version |
| old | | old |
@@ -101,7 +109,7 @@ Feature: set file properties
Scenario Outline: setting custom DAV property with custom namespace and reading it Scenario Outline: setting custom DAV property with custom namespace and reading it
Given using <dav-path-version> DAV path Given using <dav-path-version> DAV path
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "testcustomprop.txt" And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "testcustomprop.txt"
When user "Alice" sets property "very-custom-prop" with namespace "x1='http://whatever.org/ns'" of file "testcustomprop.txt" to "customPropValue" using the WebDAV API When user "Alice" sets property "very-custom-prop" with namespace "x1='http://whatever.org/ns'" of file "testcustomprop.txt" to "veryCustomPropValue" using the WebDAV API
Then the HTTP status code should be "207" Then the HTTP status code should be "207"
And the xml response should contain a property "x1:very-custom-prop" with namespace "x1='http://whatever.org/ns'" And the xml response should contain a property "x1:very-custom-prop" with namespace "x1='http://whatever.org/ns'"
And the content in the response should include the following content: And the content in the response should include the following content:
@@ -110,10 +118,10 @@ Feature: set file properties
""" """
When user "Alice" gets a custom property "x1:very-custom-prop" with namespace "x1='http://whatever.org/ns'" of file "testcustomprop.txt" When user "Alice" gets a custom property "x1:very-custom-prop" with namespace "x1='http://whatever.org/ns'" of file "testcustomprop.txt"
Then the HTTP status code should be "207" Then the HTTP status code should be "207"
And the response should contain a custom "x1:very-custom-prop" property with namespace "x1='http://whatever.org/ns'" and value "customPropValue" And the response should contain a custom "x1:very-custom-prop" property with namespace "x1='http://whatever.org/ns'" and value "veryCustomPropValue"
And the content in the response should include the following content: And the content in the response should include the following content:
""" """
<d:prop><x1:very-custom-prop xmlns:x1="http://whatever.org/ns">customPropValue</x1:very-custom-prop></d:prop> <d:prop><x1:very-custom-prop xmlns:x1="http://whatever.org/ns">veryCustomPropValue</x1:very-custom-prop></d:prop>
""" """
Examples: Examples:
| dav-path-version | | dav-path-version |