test: make remote.php configurable

test: build dav paths

test: fix paths

test: merge method args

test: add issue tags

test: add new expected failure file

test: merge expected-failure files before running tests
This commit is contained in:
Saw-jan
2024-09-17 17:11:20 +05:45
parent 273915506e
commit f86d137f87
100 changed files with 2484 additions and 2329 deletions

View File

@@ -932,6 +932,8 @@ def localApiTestPipeline(ctx):
return pipelines
def localApiTests(suite, storage, extra_environment = {}):
expectedFailuresFile = "%s/tests/acceptance/expected-failures-localAPI-on-%s-storage.md" % (dirs["base"], storage.upper())
environment = {
"PATH_TO_OCIS": dirs["base"],
"TEST_SERVER_URL": OCIS_URL,
@@ -945,6 +947,7 @@ def localApiTests(suite, storage, extra_environment = {}):
"EXPECTED_FAILURES_FILE": "%s/tests/acceptance/expected-failures-localAPI-on-%s-storage.md" % (dirs["base"], storage.upper()),
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
"OCIS_WRAPPER_URL": "http://ocis-server:5200",
"WITH_REMOTE_PHP": False,
}
for item in extra_environment:
@@ -955,7 +958,9 @@ def localApiTests(suite, storage, extra_environment = {}):
"image": OC_CI_PHP % DEFAULT_PHP_VERSION,
"environment": environment,
"commands": [
"make test-acceptance-api",
"cat %s/tests/acceptance/expected-failures-without-remotephp.md >> %s" % (dirs["base"], expectedFailuresFile),
"make -C %s test-acceptance-api" % (dirs["base"]),
"cat %s" % expectedFailuresFile,
],
}]
@@ -1143,9 +1148,12 @@ def coreApiTests(ctx, part_number = 1, number_of_parts = 1, storage = "ocis", ac
"EXPECTED_FAILURES_FILE": expectedFailuresFile,
"UPLOAD_DELETE_WAIT_TIME": "1" if storage == "owncloud" else 0,
"OCIS_WRAPPER_URL": "http://ocis-server:5200",
"WITH_REMOTE_PHP": False,
},
"commands": [
"cat %s/tests/acceptance/expected-failures-without-remotephp.md >> %s" % (dirs["base"], expectedFailuresFile),
"make -C %s test-acceptance-api" % (dirs["base"]),
"cat %s" % expectedFailuresFile,
],
},
] +

View File

@@ -104,6 +104,27 @@ class HttpRequestHelper {
$timeout
);
}
if (WebdavHelper::isDAVRequest($url) && \str_starts_with($url, OcisHelper::getServerUrl())) {
$withRemotePhp = \getenv("WITH_REMOTE_PHP") === "true";
$urlHasRemotePhp = \str_contains($url, 'remote.php');
if (!$withRemotePhp && $urlHasRemotePhp) {
throw new Exception("remote.php is disabled but found in the URL: $url");
}
if ($withRemotePhp && !$urlHasRemotePhp) {
throw new Exception("remote.php is enabled but not found in the URL: $url");
}
if ($headers && \array_key_exists("Destination", $headers)) {
if (!$withRemotePhp && $urlHasRemotePhp) {
throw new Exception("remote.php is disabled but found in the URL: $url");
}
if ($withRemotePhp && !$urlHasRemotePhp) {
throw new Exception("remote.php is enabled but not found in the URL: $url");
}
}
}
$request = self::createRequest(
$url,
$xRequestId,

View File

@@ -33,6 +33,16 @@ use GuzzleHttp\Exception\GuzzleException;
* @package TestHelpers
*/
class OcisHelper {
/**
* @return string
*/
public static function getServerUrl(): string {
if (\getenv('TEST_SERVER_URL')) {
return \getenv('TEST_SERVER_URL');
}
return 'https://localhost:9200';
}
/**
* @return bool
*/

View File

@@ -170,7 +170,7 @@ class UploadHelper extends Assert {
if ($chunkingVersion === 2) {
$source = $v2ChunksDestination . '/.file';
$headers['Destination'] = $baseUrl . "/" .
WebDavHelper::getDavPath($user, $davPathVersionToUse) .
WebDavHelper::getDavPath($davPathVersionToUse, $user) .
$destination;
$result = WebDavHelper::makeDavRequest(
$baseUrl,

View File

@@ -46,6 +46,30 @@ class WebDavHelper {
*/
public static array $spacesIdRef = [];
/**
* clear space id reference for user
*
* @param string $urlPath
*
* @return string
*/
public static function withRemotePhp(string $urlPath): string {
if (\getenv("WITH_REMOTE_PHP") === "true") {
return "remote.php/$urlPath";
}
return $urlPath;
}
/**
* @param string $url
*
* @return bool
*/
public static function isDAVRequest(string $url): bool {
$found = \preg_match("/(\bwebdav\b|\bdav\b)/", $url);
return (bool)$found;
}
/**
* clear space id reference for user
*
@@ -534,7 +558,7 @@ class WebDavHelper {
if ($json === null) {
// the graph endpoint did not give a useful answer
// try getting the information from the webdav endpoint
$fullUrl = $trimmedBaseUrl . '/remote.php/webdav';
$fullUrl = "$trimmedBaseUrl/" . self::getDavPath(self::DAV_VERSION_NEW, $user);
$response = HttpRequestHelper::sendRequest(
$fullUrl,
$xRequestId,
@@ -702,12 +726,12 @@ class WebDavHelper {
}
// get space id if testing with spaces dav
if ($spaceId === null && $davPathVersionToUse === self::DAV_VERSION_SPACES) {
if ($spaceId === null && $davPathVersionToUse === self::DAV_VERSION_SPACES && !\in_array($type, ["public-files", "versions"])) {
$path = \ltrim($path, "/");
if (\str_starts_with($path, "Shares/")) {
$spaceId = self::getSharesSpaceIdForUser(
$baseUrl,
$doDavRequestAsUser ?? $user,
$user,
$password,
$xRequestId
);
@@ -715,14 +739,22 @@ class WebDavHelper {
} else {
$spaceId = self::getPersonalSpaceIdForUserOrFakeIfNotFound(
$baseUrl,
$doDavRequestAsUser ?? $user,
$user,
$password,
$xRequestId
);
}
}
$davPath = self::getDavPath($doDavRequestAsUser ?? $user, $davPathVersionToUse, $type, $spaceId);
$uniquePath = $user;
if ($davPathVersionToUse === self::DAV_VERSION_SPACES && !\in_array($type, ["archive", "versions", "public-files"])) {
$uniquePath = $spaceId;
} elseif ($type === "versions") {
// $path is file-id in case of versions
$uniquePath = $path;
}
$davPath = self::getDavPath($davPathVersionToUse, $uniquePath, $type);
//replace %, # and ? and in the path, Guzzle will not encode them
$urlSpecialChar = [['%', '#', '?'], ['%25', '%23', '%3F']];
@@ -732,14 +764,18 @@ class WebDavHelper {
$urlParameter = \http_build_query($urlParameter, '', '&');
$path .= '?' . $urlParameter;
}
$fullUrl = self::sanitizeUrl($baseUrl . "/$davPath" . $path);
$fullUrl = self::sanitizeUrl("{$baseUrl}/{$davPath}");
// NOTE: no need to append path for archive and versions endpoints
if (!\in_array($type, ["archive", "versions"])) {
$fullUrl .= "/" . \ltrim($path, "/");
}
if ($authType === 'bearer') {
$headers['Authorization'] = 'Bearer ' . $password;
$user = null;
$password = null;
}
if ($type === "public-files-new") {
if ($type === "public-files") {
if ($password === null || $password === "") {
$user = null;
} else {
@@ -769,7 +805,7 @@ class WebDavHelper {
$fullUrl,
$xRequestId,
$method,
$user,
$doDavRequestAsUser ?? $user,
$password,
$headers,
$body,
@@ -785,67 +821,66 @@ class WebDavHelper {
/**
* get the dav path
*
* @param string|null $user
* @param int|null $davPathVersionToUse (1|2)
* @param int $davPathVersion (1|2|3)
* @param string|null $userOrItemIdOrSpaceIdOrToken 'user' or 'file-id' or 'space-id' or 'public-token'
* @param string|null $type
* @param string|null $spaceId
*
* @return string
*/
public static function getDavPath(
?string $user,
?int $davPathVersionToUse = null,
?string $type = "files",
?string $spaceId = null
int $davPathVersion,
?string $userOrItemIdOrSpaceIdOrToken = null,
?string $type = "files"
):string {
$newTrashbinDavPath = "remote.php/dav/trash-bin/$user/";
switch ($type) {
case 'public-files':
case 'public-files-old':
return "public.php/webdav/";
case 'public-files-new':
return "remote.php/dav/public-files/$user/";
case 'archive':
return "remote.php/dav/archive/$user/files";
return self::withRemotePhp("dav/archive/$userOrItemIdOrSpaceIdOrToken/files");
case 'versions':
case 'customgroups':
return "remote.php/dav/";
return self::withRemotePhp("dav/meta/$userOrItemIdOrSpaceIdOrToken/v");
case 'comments':
return self::withRemotePhp("dav/comments/files");
default:
break;
}
if ($davPathVersionToUse === self::DAV_VERSION_SPACES) {
if ($davPathVersion === self::DAV_VERSION_SPACES) {
if ($type === "trash-bin") {
if ($userOrItemIdOrSpaceIdOrToken === null) {
throw new InvalidArgumentException("Space ID is required for trash-bin endpoint");
}
return self::withRemotePhp("dav/spaces/trash-bin/$userOrItemIdOrSpaceIdOrToken");
} elseif ($type === "public-files") {
// spaces DAV path doesn't have own public-files endpoint
return self::withRemotePhp("dav/public-files/$userOrItemIdOrSpaceIdOrToken");
}
// return spaces root path if spaceid is null
// REPORT request uses spaces root path
if ($spaceId === null) {
return "remote.php/dav/spaces/";
if ($userOrItemIdOrSpaceIdOrToken === null) {
return self::withRemotePhp("dav/spaces");
}
if ($type === "trash-bin") {
return "remote.php/dav/spaces/trash-bin/" . $spaceId . '/';
}
return "remote.php/dav/spaces/" . $spaceId . '/';
return self::withRemotePhp("dav/spaces/$userOrItemIdOrSpaceIdOrToken");
} else {
if ($davPathVersionToUse === self::DAV_VERSION_OLD) {
if ($type === "trash-bin") {
// Since there is no trash bin endpoint for old dav version, new dav version's endpoint is used here.
return $newTrashbinDavPath;
}
return "remote.php/webdav/";
} elseif ($davPathVersionToUse === self::DAV_VERSION_NEW) {
if ($type === "files") {
$path = 'remote.php/dav/files/';
return $path . $user . '/';
} elseif ($type === "trash-bin") {
return $newTrashbinDavPath;
} else {
return "remote.php/dav";
}
} else {
throw new InvalidArgumentException(
"DAV path version $davPathVersionToUse is unknown"
);
if ($type === "trash-bin") {
// Since there is no trash bin endpoint for old dav version,
// new dav version's endpoint is used here.
return self::withRemotePhp("dav/trash-bin/$userOrItemIdOrSpaceIdOrToken");
}
if ($davPathVersion === self::DAV_VERSION_OLD) {
if ($type === "public-files") {
// TODO: cleanup
// this endpoint does not exist
return self::withRemotePhp("public.php/webdav");
}
return self::withRemotePhp("webdav");
} elseif ($davPathVersion === self::DAV_VERSION_NEW) {
if ($type === "files") {
return self::withRemotePhp("dav/files/$userOrItemIdOrSpaceIdOrToken");
} elseif ($type === "public-files") {
return self::withRemotePhp("dav/public-files/$userOrItemIdOrSpaceIdOrToken");
}
return self::withRemotePhp("dav");
}
throw new InvalidArgumentException("Invalid DAV path: $davPathVersion");
}
}
@@ -917,12 +952,12 @@ class WebDavHelper {
$baseUrl,
null,
null,
"/public-files/$token/$fileName",
"{$token}/{$fileName}",
['d:getlastmodified'],
$xRequestId,
'1',
null,
null,
"public-files",
$davVersionToUse
);
$responseXmlObject = HttpRequestHelper::getResponseXml(

View File

@@ -60,6 +60,15 @@ class ArchiverContext implements Context {
$this->featureContext = BehatHelper::getContext($scope, $environment, 'FeatureContext');
}
/**
* @param string $query
*
* @return string
*/
public function getArchiverUrl(string $query): string {
return $this->featureContext->getBaseUrl() . '/archiver?' . $query;
}
/**
* @param string $type
*
@@ -203,7 +212,7 @@ class ArchiverContext implements Context {
$queryString .= '&output-format=' . $archiveType;
}
return HttpRequestHelper::get(
$this->featureContext->getBaseUrl() . '/archiver?' . $queryString,
$this->getArchiverUrl($queryString),
$this->featureContext->getStepLineRef(),
$downloader,
$this->featureContext->getPasswordForUser($downloader),
@@ -215,8 +224,8 @@ class ArchiverContext implements Context {
* @When user :user downloads the archive of these items using the resource :addressType
*
* @param string $user
* @param TableNode $items
* @param string $addressType ids|paths
* @param TableNode $items
*
* @return void
*
@@ -224,19 +233,19 @@ class ArchiverContext implements Context {
*/
public function userDownloadsTheArchiveOfTheseItems(
string $user,
TableNode $items,
string $addressType
string $addressType,
TableNode $items
): void {
$user = $this->featureContext->getActualUsername($user);
$queryString = '';
$queryString = [];
foreach ($items->getRows() as $item) {
$queryString .= $this->getArchiverQueryString($user, $item[0], $addressType) . '&';
$queryString[] = $this->getArchiverQueryString($user, $item[0], $addressType);
}
$queryString = \join('&', $queryString);
$queryString = \rtrim($queryString, '&');
$this->featureContext->setResponse(
HttpRequestHelper::get(
$this->featureContext->getBaseUrl() . '/archiver?' . $queryString,
$this->getArchiverUrl($queryString),
$this->featureContext->getStepLineRef(),
$user,
$this->featureContext->getPasswordForUser($user),

View File

@@ -75,8 +75,16 @@ class AuthContext implements Context {
?string $body = null,
?array $headers = []
): ResponseInterface {
$fullUrl = $this->featureContext->getBaseUrl() . $url;
// NOTE: preserving '/' for tests with special cases
// E.g: coreApiAuth/webDavSpecialURLs.feature
$url = \substr($url, 1);
$trimmedUrl = \ltrim($url, '/');
$slashCount = \strlen($url) - \strlen($trimmedUrl);
if (WebdavHelper::isDAVRequest($url)) {
$url = WebdavHelper::withRemotePhp($trimmedUrl);
}
$url = \str_repeat("/", $slashCount) . $url;
$fullUrl = $this->featureContext->getBaseUrl() . "/$url";
return HttpRequestHelper::sendRequest(
$fullUrl,
$this->featureContext->getStepLineRef(),
@@ -391,10 +399,11 @@ class AuthContext implements Context {
$ofUser
);
if (isset($row['destination'])) {
$headers['Destination'] = $this->featureContext->substituteInLineCodes(
$this->featureContext->getBaseUrl() . $row['destination'],
$destination = $this->featureContext->substituteInLineCodes(
$row['destination'],
$ofUser
);
$headers['Destination'] = $this->featureContext->getBaseUrl() . "/" . WebdavHelper::withRemotePhp(\ltrim($destination, "/"));
}
$response = $this->sendRequest(
$row['endpoint'],
@@ -440,10 +449,11 @@ class AuthContext implements Context {
$ofUser
);
if (isset($row['destination'])) {
$headers['Destination'] = $this->featureContext->substituteInLineCodes(
$this->featureContext->getBaseUrl() . $row['destination'],
$destination = $this->featureContext->substituteInLineCodes(
$row['destination'],
$ofUser
);
$headers['Destination'] = $this->featureContext->getBaseUrl() . "/" . WebdavHelper::withRemotePhp(\ltrim($destination, "/"));
}
$response = $this->sendRequest(
$row['endpoint'],
@@ -583,10 +593,10 @@ class AuthContext implements Context {
$baseUrl = $this->featureContext->getBaseUrl();
$suffix = "";
if ($this->featureContext->getDavPathVersion() === WebDavHelper::DAV_VERSION_SPACES) {
$suffix = $this->featureContext->spacesContext->getSpaceIdByName($user, "Personal") . "/";
$suffix = $this->featureContext->spacesContext->getSpaceIdByName($user, "Personal");
}
$davPath = WebDavHelper::getDavPath($user, $this->featureContext->getDavPathVersion());
$headers['Destination'] = "{$baseUrl}/{$davPath}{$suffix}moved";
$davPath = WebDavHelper::getDavPath($this->featureContext->getDavPathVersion(), $user);
$headers['Destination'] = "{$baseUrl}/{$davPath}/{$suffix}/moved";
}
foreach ($table->getHash() as $row) {
@@ -625,7 +635,11 @@ class AuthContext implements Context {
$endpoint,
$username
);
$fullUrl = $this->featureContext->getBaseUrl() . $endpoint;
$endpoint = \ltrim($endpoint, '/');
if (WebdavHelper::isDAVRequest($endpoint)) {
$endpoint = WebdavHelper::withRemotePhp($endpoint);
}
$fullUrl = $this->featureContext->getBaseUrl() . "/$endpoint";
$response = HttpRequestHelper::sendRequestOnce(
$fullUrl,
$this->featureContext->getStepLineRef(),

View File

@@ -150,9 +150,10 @@ class CollaborationContext implements Context {
*/
public function createFile(string $file, string $password, string $folder = ""): void {
$token = $this->featureContext->shareNgGetLastCreatedLinkShareToken();
$davPath = WebDavHelper::getDavPath($token, null, "public-files-new") . "/$folder";
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebDavHelper::getDavPath(WebDavHelper::DAV_VERSION_NEW, $token, "public-files");
$response = HttpRequestHelper::sendRequest(
$this->featureContext->getBaseUrl() . "/$davPath",
"$baseUrl/$davPath/$folder",
$this->featureContext->getStepLineRef(),
"PROPFIND",
"public",

View File

@@ -492,8 +492,7 @@ class FeatureContext extends BehatVariablesContext {
$this->alternateAdminPassword = "IHave99LotsOfPriv";
$this->publicLinkSharePassword = "publicPwd:1";
// in case of CI deployment we take the server url from the environment
$testServerUrl = \getenv('TEST_SERVER_URL');
$testServerUrl = OcisHelper::getServerUrl();
if ($testServerUrl !== false) {
$this->baseUrl = \rtrim($testServerUrl, '/');
$this->localBaseUrl = $this->baseUrl;
@@ -808,15 +807,6 @@ class FeatureContext extends BehatVariablesContext {
return \ltrim($this->getBasePath() . "/ocs/v$ocsApiVersion.php", "/");
}
/**
* returns the complete DAV path including the base path e.g. owncloud-core/remote.php/dav
*
* @return string
*/
public function getDAVPathIncludingBasePath(): string {
return \ltrim($this->getBasePath() . "/" . $this->getDavPath(), "/");
}
/**
* returns the base URL but without "http(s)://" in front of it
*
@@ -1339,8 +1329,8 @@ class FeatureContext extends BehatVariablesContext {
*/
public function userSendsHTTPMethodToUrl(string $user, string $verb, string $url): void {
$user = $this->getActualUsername($user);
$url = $this->substituteInLineCodes($url, $user);
$this->setResponse($this->sendingToWithDirectUrl($user, $verb, $url));
$endpoint = $this->substituteInLineCodes($url, $user);
$this->setResponse($this->sendingToWithDirectUrl($user, $verb, $endpoint));
}
/**
@@ -1458,7 +1448,11 @@ class FeatureContext extends BehatVariablesContext {
* @throws GuzzleException
*/
public function sendingToWithDirectUrl(string $user, string $verb, string $url, ?string $body = null, ?string $password = null, ?array $headers = null): ResponseInterface {
$fullUrl = $this->getBaseUrl() . $url;
$url = \ltrim($url, '/');
if (WebdavHelper::isDAVRequest($url)) {
$url = WebdavHelper::withRemotePhp($url);
}
$fullUrl = $this->getBaseUrl() . "/$url";
if ($password === null) {
$password = $this->getPasswordForUser($user);
@@ -1947,8 +1941,6 @@ class FeatureContext extends BehatVariablesContext {
}
}
// TODO do similar for other usernames for e.g. %regularuser% or %test-user-1%
/**
* @param string|null $functionalUsername
*
@@ -2119,7 +2111,8 @@ class FeatureContext extends BehatVariablesContext {
*/
public function getCommentUrlRegExp(): string {
$basePath = \ltrim($this->getBasePath() . "/", "/");
return "/{$basePath}remote.php/dav/comments/files/([0-9]+)";
$commentsPath = WebDAVHelper::getDavPath(WebDavHelper::DAV_VERSION_NEW, null, "comments");
return "/{$basePath}/{$commentsPath}/([0-9]+)";
}
/**
@@ -2226,14 +2219,6 @@ class FeatureContext extends BehatVariablesContext {
],
"parameter" => []
],
[
"code" => "%dav_path%",
"function" => [
$this,
"getDAVPathIncludingBasePath"
],
"parameter" => []
],
[
"code" => "%ocs_path_v1%",
"function" => [

View File

@@ -37,15 +37,6 @@ require_once 'bootstrap.php';
class FilesVersionsContext implements Context {
private FeatureContext $featureContext;
/**
* @param string $fileId
*
* @return string
*/
private function getVersionsPathForFileId(string $fileId):string {
return "/meta/$fileId/v";
}
/**
* @When user :user tries to get versions of file :file from :fileOwner
*
@@ -74,26 +65,26 @@ class FilesVersionsContext implements Context {
}
/**
* @When the public tries to get the number of versions of file :file with password :password using file-id path :endpoint
* @When the public tries to get the number of versions of file :file with password :password using file-id :endpoint
*
* @param string $file
* @param string $password
* @param string $endpoint
* @param string $fileId
*
* @return void
*/
public function thePublicGetsTheNumberOfVersionsOfFileWithPasswordUsingFileIdPath(string $file, string $password, string $endpoint): void {
public function thePublicTriesToGetTheNumberOfVersionsOfFileWithPasswordUsingFileId(string $file, string $password, string $fileId): void {
$password = $this->featureContext->getActualPassword($password);
$this->featureContext->setResponse(
$this->featureContext->makeDavRequest(
"public",
"PROPFIND",
$endpoint,
$fileId,
null,
null,
null,
"versions",
(string)$this->featureContext->getDavPathVersion(),
$this->featureContext->getDavPathVersion(),
false,
$password
)
@@ -123,35 +114,33 @@ class FilesVersionsContext implements Context {
return $this->featureContext->makeDavRequest(
$user,
"PROPFIND",
$this->getVersionsPathForFileId($fileId),
$fileId,
null,
null,
$spaceId,
null,
'2'
"versions"
);
}
/**
* @When user :user gets the number of versions of file :resource using file-id path :endpoint
* @When user :user tries to get the number of versions of file :resource using file-id path :endpoint
* @When user :user gets the number of versions of file :resource using file-id :fileId
* @When user :user tries to get the number of versions of file :resource using file-id :fileId
*
* @param string $user
* @param string $endpoint
* @param string $fileId
*
* @return void
*/
public function userGetsTheNumberOfVersionsOfFileOfTheSpace(string $user, string $endpoint):void {
public function userGetsTheNumberOfVersionsOfFileOfTheSpace(string $user, string $fileId):void {
$this->featureContext->setResponse(
$this->featureContext->makeDavRequest(
$user,
"PROPFIND",
$endpoint,
$fileId,
null,
null,
null,
"versions",
(string)$this->featureContext->getDavPathVersion()
"versions"
)
);
}
@@ -190,12 +179,11 @@ class FilesVersionsContext implements Context {
return $this->featureContext->makeDavRequest(
$user,
"PROPFIND",
$this->getVersionsPathForFileId($fileId),
$fileId,
null,
$body,
null,
null,
'2'
"versions",
);
}
@@ -219,7 +207,7 @@ class FilesVersionsContext implements Context {
$xmlPart = $responseXml->xpath("//d:response/d:href");
//restoring the version only works with DAV path v2
$destinationUrl = $this->featureContext->getBaseUrl() . "/" .
WebDavHelper::getDavPath($user, 2) . \trim($path, "/");
WebDavHelper::getDavPath(WebDavHelper::DAV_VERSION_NEW, $user) . \trim($path, "/");
$fullUrl = $this->featureContext->getBaseUrlWithoutPath() .
$xmlPart[$versionIndex];
return HttpRequestHelper::sendRequest(
@@ -306,7 +294,7 @@ class FilesVersionsContext implements Context {
):void {
$user = $this->featureContext->getActualUsername($user);
$fileId = $this->featureContext->getFileIdForPath($user, $path);
Assert::assertNotNull($fileId, __METHOD__ . " file '$path' for user '$user' not found (the file may not exist)");
Assert::assertNotNull($fileId, __METHOD__ . ". file '$path' for user '$user' not found (the file may not exist)");
$this->assertFileVersionsCount($user, $fileId, $count);
}
@@ -548,7 +536,7 @@ class FilesVersionsContext implements Context {
$this->featureContext->getBaseUrl(),
$user,
$password,
$this->getVersionsPathForFileId($fileId),
$fileId,
$properties,
$this->featureContext->getStepLineRef(),
(string) $folderDepth,

View File

@@ -52,48 +52,6 @@ class GraphContext implements Context {
$this->spacesContext = BehatHelper::getContext($scope, $environment, 'SpacesContext');
}
/**
* @param string $user
* @param string|null $userName
* @param string|null $password
* @param string|null $email
* @param string|null $displayName
* @param string|null $requester
* @param string|null $requesterPassword
*
* @return void
* @throws JsonException
* @throws GuzzleException
*/
public function userHasBeenEditedUsingTheGraphApi(
string $user,
?string $userName = null,
?string $password = null,
?string $email = null,
?string $displayName = null,
?string $requester = null,
?string $requesterPassword = null
): void {
if (!$requester) {
$requester = $this->featureContext->getAdminUsername();
$requesterPassword = $this->featureContext->getAdminPassword();
}
$userId = $this->featureContext->getAttributeOfCreatedUser($user, 'id');
$response = GraphHelper::editUser(
$this->featureContext->getBaseUrl(),
$this->featureContext->getStepLineRef(),
$requester,
$requesterPassword,
$userId,
$userName,
$password,
$email,
$displayName
);
$this->featureContext->setResponse($response);
$this->featureContext->theHttpStatusCodeShouldBe(200); // TODO 204 when prefer=minimal header was sent
}
/**
* @When /^the user "([^"]*)" changes the email of user "([^"]*)" to "([^"]*)" using the Graph API$/
* @When /^the user "([^"]*)" tries to change the email of user "([^"]*)" to "([^"]*)" using the Graph API$/

View File

@@ -56,7 +56,7 @@ class OcmContext implements Context {
* @return string
*/
public function getOcisDomain(): string {
return $this->extractDomain(\getenv('TEST_SERVER_URL'));
return $this->extractDomain(OcisHelper::getServerUrl());
}
/**

View File

@@ -37,6 +37,20 @@ require_once 'bootstrap.php';
class PublicWebDavContext implements Context {
private FeatureContext $featureContext;
/**
* @param string $versionString (old|new)
*
* @return int
*/
public function getPublicDavVersion(string $versionString): int {
if ($versionString === "old") {
return WebDavHelper::DAV_VERSION_OLD;
} elseif ($versionString === "new") {
return WebDavHelper::DAV_VERSION_NEW;
}
throw new Exception("Unknown public WebDAV version: $versionString");
}
/**
* @param string $range ignore if empty
* @param string $publicWebDAVAPIVersion
@@ -128,15 +142,15 @@ class PublicWebDavContext implements Context {
*
* @return ResponseInterface
*/
public function deleteFileFromPublicShare(string $fileName, string $password = ""):ResponseInterface {
public function deleteFileFromPublicShare(string $fileName, string $password = ""): ResponseInterface {
$token = ($this->featureContext->isUsingSharingNG()) ? $this->featureContext->shareNgGetLastCreatedLinkShareToken() : $this->featureContext->getLastCreatedPublicShareToken();
$davPath = WebDavHelper::getDavPath(
$this->getPublicDavVersion("new"),
$token,
0,
"public-files-new"
"public-files"
);
$password = $this->featureContext->getActualPassword($password);
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath$fileName";
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$fileName";
$userName = $this->getUsernameForPublicWebdavApi(
$token,
$password,
@@ -211,13 +225,13 @@ class PublicWebDavContext implements Context {
public function renameFileFromPublicShare(string $fileName, string $toFileName, string $publicWebDAVAPIVersion, ?string $password = ""):ResponseInterface {
$token = ($this->featureContext->isUsingSharingNG()) ? $this->featureContext->shareNgGetLastCreatedLinkShareToken() : $this->featureContext->getLastCreatedPublicShareToken();
$davPath = WebDavHelper::getDavPath(
$this->getPublicDavVersion($publicWebDAVAPIVersion),
$token,
0,
"public-files-$publicWebDAVAPIVersion"
"public-files"
);
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath$fileName";
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$fileName";
$password = $this->featureContext->getActualPassword($password);
$destination = $this->featureContext->getBaseUrl() . "/$davPath$toFileName";
$destination = $this->featureContext->getBaseUrl() . "/$davPath/$toFileName";
$userName = $this->getUsernameForPublicWebdavApi(
$token,
$password,
@@ -326,14 +340,14 @@ class PublicWebDavContext implements Context {
$token = ($this->featureContext->isUsingSharingNG()) ? $this->featureContext->shareNgGetLastCreatedLinkShareToken() : $this->featureContext->getLastCreatedPublicShareToken();
$davPath = WebDavHelper::getDavPath(
$this->featureContext->getDavPathVersion(),
$token,
0,
"public-files-new"
"public-files"
);
$username = $this->featureContext->getActualUsername($user);
$password = $this->featureContext->getPasswordForUser($user);
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath$path";
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$path";
return HttpRequestHelper::get(
$fullUrl,
@@ -366,11 +380,11 @@ class PublicWebDavContext implements Context {
$token = $this->featureContext->getLastCreatedPublicShareToken();
}
$davPath = WebDavHelper::getDavPath(
$this->getPublicDavVersion($publicWebDAVAPIVersion),
$token,
0,
"public-files-$publicWebDAVAPIVersion"
"public-files"
);
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath$path";
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$path";
$userName = $this->getUsernameForPublicWebdavApi(
$token,
$password,
@@ -442,9 +456,9 @@ class PublicWebDavContext implements Context {
string $source,
string $destination
):ResponseInterface {
$fullSourceUrl = $baseUrl . $source;
$fullSourceUrl = "$baseUrl/$source";
$fullDestUrl = WebDavHelper::sanitizeUrl(
$baseUrl . $destination
"$baseUrl/$destination"
);
$headers["Destination"] = $fullDestUrl;
@@ -470,9 +484,9 @@ class PublicWebDavContext implements Context {
public function thePublicCopiesFileUsingTheWebDAVApi(string $source, string $destination, string $publicWebDAVAPIVersion):void {
$token = ($this->featureContext->isUsingSharingNG()) ? $this->featureContext->shareNgGetLastCreatedLinkShareToken() : $this->featureContext->getLastCreatedPublicShareToken();
$davPath = WebDavHelper::getDavPath(
$this->getPublicDavVersion($publicWebDAVAPIVersion),
$token,
0,
"public-files-$publicWebDAVAPIVersion"
"public-files"
);
$baseUrl = $this->featureContext->getLocalBaseUrl() . '/' . $davPath;
@@ -674,46 +688,18 @@ class PublicWebDavContext implements Context {
}
/**
* @param string $filename target file name
* @param string $body content to upload
* @param string $publicWebDAVAPIVersion
*
* @return ResponseInterface
*/
public function publiclyUploadingContent(
string $filename,
string $body = 'test',
string $publicWebDAVAPIVersion = "old"
):ResponseInterface {
return $this->publicUploadContent(
$filename,
'',
$body,
false,
[],
$publicWebDAVAPIVersion
);
}
/**
* @When /^the public uploads file "([^"]*)" with content "([^"]*)" using the (old|new) public WebDAV API$/
* @When /^the public uploads file "([^"]*)" with content "([^"]*)" using the (?:old|new) public WebDAV API$/
*
* @param string $filename target file name
* @param string $body content to upload
* @param string $publicWebDAVAPIVersion
*
* @return void
*/
public function thePublicUploadsFileWithContentUsingThePublicWebDavApi(
string $filename,
string $body = 'test',
string $publicWebDAVAPIVersion = "old"
string $body = 'test'
):void {
$response = $this->publiclyUploadingContent(
$filename,
$body,
$publicWebDAVAPIVersion
);
$response = $this->publicUploadContent($filename, '', $body);
$this->featureContext->setResponse($response);
$this->featureContext->pushToLastStatusCodesArrays();
}
@@ -723,20 +709,11 @@ class PublicWebDavContext implements Context {
*
* @param string $filename target file name
* @param string $body content to upload
* @param string $publicWebDAVAPIVersion
*
* @return void
*/
public function thePublicHasUploadedFileWithContentUsingThePublicWebDavApi(
string $filename,
string $body = 'test',
string $publicWebDAVAPIVersion = "old"
):void {
$response = $this->publiclyUploadingContent(
$filename,
$body,
$publicWebDAVAPIVersion
);
public function thePublicHasUploadedFileWithContent(string $filename, string $body): void {
$response = $this->publicUploadContent($filename, '', $body);
$this->featureContext->theHTTPStatusCodeShouldBe([201, 204], "", $response);
}
@@ -1205,14 +1182,6 @@ class PublicWebDavContext implements Context {
$publicWebDAVAPIVersion,
$shareNg
);
$responseContent = $response->getBody()->getContents();
\libxml_use_internal_errors(true);
Assert::assertNotFalse(
\simplexml_load_string($responseContent),
"response body is not valid XML, maybe download did work\n" .
"response body: \n$responseContent\n"
);
$this->featureContext->theHTTPStatusCodeShouldBe($expectedHttpCode, "", $response);
}
@@ -1575,11 +1544,11 @@ class PublicWebDavContext implements Context {
):ResponseInterface {
$token = ($this->featureContext->isUsingSharingNG()) ? $this->featureContext->shareNgGetLastCreatedLinkShareToken() : $this->featureContext->getLastCreatedPublicShareToken();
$davPath = WebDavHelper::getDavPath(
$this->featureContext->getDavPathVersion(),
$token,
0,
"public-files-new"
"public-files"
);
$url = $this->featureContext->getBaseUrl() . "/$davPath";
$url = $this->featureContext->getBaseUrl() . "/$davPath/";
$password = $this->featureContext->getActualPassword($password);
$userName = $this->getUsernameForPublicWebdavApi(
$token,
@@ -1731,11 +1700,10 @@ class PublicWebDavContext implements Context {
$token = $this->featureContext->getLastCreatedPublicShareToken();
}
$davPath = WebDavHelper::getDavPath(
$this->getPublicDavVersion("new"),
$token,
0,
"public-files-new"
"public-files"
);
$url = $this->featureContext->getBaseUrl() . "/$davPath";
$userName = $this->getUsernameForPublicWebdavApi(
$token,
$password,
@@ -1746,7 +1714,8 @@ class PublicWebDavContext implements Context {
'/',
\array_map('rawurlencode', \explode('/', $filename))
);
$url .= \ltrim($filename, '/');
$encodedFilePath = \ltrim($filename, '/');
$url = $this->featureContext->getBaseUrl() . "/$davPath/$encodedFilePath";
// Trim any "/" from the end. For example, if we are putting content to a
// single file that has been shared with a link, then the URL should end
// with the link token and no "/" at the end.
@@ -1836,9 +1805,9 @@ class PublicWebDavContext implements Context {
}
$token = ($this->featureContext->isUsingSharingNG()) ? $this->featureContext->shareNgGetLastCreatedLinkShareToken() : $this->featureContext->getLastCreatedPublicShareToken();
$davPath = WebDavHelper::getDavPath(
null,
null,
"public-files-$publicWebDAVAPIVersion"
$this->getPublicDavVersion($publicWebDAVAPIVersion),
$token,
"public-files"
);
$password = $this->featureContext->getActualPassword($password);
$username = $this->getUsernameForPublicWebdavApi(
@@ -1846,7 +1815,7 @@ class PublicWebDavContext implements Context {
$password,
$publicWebDAVAPIVersion
);
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath$token";
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath";
$response = HttpRequestHelper::sendRequest(
$fullUrl,
$this->featureContext->getStepLineRef(),

View File

@@ -103,16 +103,15 @@ class SearchContext implements Context {
$body .= " </a:prop>";
}
$body .= " </oc:search-files>";
$davPathVersionToUse = $this->featureContext->getDavPathVersion();
$davPath = WebDavHelper::getDavPath($doDavRequestAsUser ?? $user, $davPathVersionToUse, 'files', null);
if ($davPathVersionToUse == WebDavHelper::DAV_VERSION_NEW) {
// Removes the last component('username' in this case) from the WebDAV path by going up one level in the directory structure.
// e.g. remote.php/dav/files/Alice ==> remote.php/dav/files/
$davPath = \dirname($davPath, 1);
}
// $davPath will be one of the followings:
// - webdav
// - dav/files
// - dav/spaces
$davPath = WebDavHelper::getDavPath($davPathVersionToUse);
$fullUrl = WebDavHelper::sanitizeUrl("$baseUrl/$davPath");
return HttpRequestHelper::sendRequest(
$fullUrl,
$this->featureContext->getStepLineRef(),

View File

@@ -31,6 +31,7 @@ use TestHelpers\OcsApiHelper;
use TestHelpers\SharingHelper;
use TestHelpers\HttpRequestHelper;
use TestHelpers\TranslationHelper;
use TestHelpers\WebDavHelper;
use GuzzleHttp\Exception\GuzzleException;
/**
@@ -3245,8 +3246,9 @@ trait Sharing {
* @return ResponseInterface
*/
public function getPublicPreviewOfFile(string $fileName, string $token):ResponseInterface {
$url = $this->getBaseUrl() .
"/remote.php/dav/public-files/$token/$fileName?preview=1";
$baseUrl = $this->getBaseUrl();
$davPath = WebdavHelper::getDavPath($this->getDavPathVersion(), $token, "public-files");
$url = "{$baseUrl}/{$davPath}/$fileName?preview=1";
return HttpRequestHelper::get(
$url,
$this->getStepLineRef()

View File

@@ -49,13 +49,13 @@ class SpacesContext implements Context {
private FavoritesContext $favoritesContext;
private ChecksumContext $checksumContext;
private FilesVersionsContext $filesVersionsContext;
private ArchiverContext $archiverContext;
/**
* key is space name and value is the username that created the space
*/
private array $createdSpaces;
private string $ocsApiUrl = '/ocs/v2.php/apps/files_sharing/api/v1/shares';
private string $davSpacesUrl = '/remote.php/dav/spaces/';
/**
* @var array map with user as key, spaces and file etags as value
@@ -267,7 +267,9 @@ class SpacesContext implements Context {
*/
public function getFileData(string $user, string $spaceName, string $fileName): ResponseInterface {
$space = $this->getSpaceByName($user, $spaceName);
$fullUrl = $this->featureContext->getBaseUrl() . $this->davSpacesUrl . $space["id"] . "/" . $fileName;
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$fileName}";
return HttpRequestHelper::get(
$fullUrl,
@@ -310,7 +312,12 @@ class SpacesContext implements Context {
if ($folderName === $space["name"]) {
$folderName = '';
}
$fullUrl = $space["root"]["webDavUrl"] . "/" . \rawurlencode($folderName);
$encodedName = \rawurlencode($folderName);
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebDavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$encodedName}";
$response = HttpRequestHelper::sendRequest(
$fullUrl,
$this->featureContext->getStepLineRef(),
@@ -400,6 +407,7 @@ class SpacesContext implements Context {
$this->favoritesContext = BehatHelper::getContext($scope, $environment, 'FavoritesContext');
$this->checksumContext = BehatHelper::getContext($scope, $environment, 'ChecksumContext');
$this->filesVersionsContext = BehatHelper::getContext($scope, $environment, 'FilesVersionsContext');
$this->archiverContext = BehatHelper::getContext($scope, $environment, 'ArchiverContext');
}
/**
@@ -1690,7 +1698,11 @@ class SpacesContext implements Context {
$spaceName
);
$fullUrl = $space["root"]["webDavUrl"] . '/' . ltrim($fileSource, "/");
$encodedName = \rawurlencode(ltrim($fileSource, "/"));
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$encodedName}";
$this->featureContext->setResponse($this->copyFilesAndFoldersRequest($user, $fullUrl, $headers));
}
@@ -1717,8 +1729,11 @@ class SpacesContext implements Context {
);
$headers['Overwrite'] = 'F';
$fileSource = $this->escapePath(\trim($fileSource, "/"));
$fullUrl = $space["root"]["webDavUrl"] . '/' . $fileSource;
$encodedName = \rawurlencode(ltrim($fileSource, "/"));
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$encodedName}";
return $this->moveFilesAndFoldersRequest($user, $fullUrl, $headers);
}
@@ -1831,7 +1846,11 @@ class SpacesContext implements Context {
}
}
$fullUrl = $space["root"]["webDavUrl"] . '/' . ltrim($fileSource, "/");
$encodedName = \rawurlencode(ltrim($fileSource, "/"));
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$encodedName}";
$this->featureContext->setResponse($this->copyFilesAndFoldersRequest($user, $fullUrl, $headers));
}
@@ -1859,7 +1878,12 @@ class SpacesContext implements Context {
$space = $this->getSpaceByName($user, $fromSpaceName);
$headers['Destination'] = $this->destinationHeaderValueWithSpaceName($user, $fileDestination, $toSpaceName);
$headers['Overwrite'] = 'T';
$fullUrl = $space["root"]["webDavUrl"] . '/' . ltrim($fileSource, "/");
$encodedName = \rawurlencode(ltrim($fileSource, "/"));
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$encodedName}";
if ($action === 'copying') {
$response = $this->copyFilesAndFoldersRequest($user, $fullUrl, $headers);
} else {
@@ -1922,7 +1946,12 @@ class SpacesContext implements Context {
):void {
$space = $this->getSpaceByName($user, $fromSpaceName);
$headers['Destination'] = $this->destinationHeaderValueWithSpaceName($user, $fileDestination, $toSpaceName);
$fullUrl = $space["root"]["webDavUrl"] . '/' . \ltrim($fileSource, "/");
$encodedName = \rawurlencode(ltrim($fileSource, "/"));
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$encodedName}";
$this->featureContext->setResponse($this->moveFilesAndFoldersRequest($user, $fullUrl, $headers));
$this->featureContext->pushToLastHttpStatusCodesArray();
}
@@ -1941,12 +1970,9 @@ class SpacesContext implements Context {
public function destinationHeaderValueWithSpaceName(string $user, string $fileDestination, string $spaceName, string $endPath = null):string {
$space = $this->getSpaceByName($user, $spaceName);
$fileDestination = $this->escapePath(\ltrim($fileDestination, "/"));
if ($endPath && str_contains($endPath, 'remote.php')) {
// this is a check for when we want to test with the endpoint having `remote.php` in space webdav
// by default spaces webdav is '/dav/spaces'
return $this->featureContext->getBaseUrl() . '/remote.php/dav/spaces/' . $space['id'] . '/' . $fileDestination;
}
return $space["root"]["webDavUrl"] . '/' . $fileDestination;
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
return "{$baseUrl}/{$davPath}/{$fileDestination}";
}
/**
@@ -1971,19 +1997,19 @@ class SpacesContext implements Context {
}
/**
* @When /^user "([^"]*)" (copies|moves|renames) a file "([^"]*)" into "([^"]*)" inside space "([^"]*)" using file-id path "([^"]*)"$/
* @When /^user "([^"]*)" (copies|moves|renames) a file "([^"]*)" into "([^"]*)" inside space "([^"]*)" using file-id "([^"]*)"$/
*
* @param string $user
* @param string $actionType
* @param string $sourceFile
* @param string $destinationFile
* @param string $toSpaceName
* @param string $url
* @param string $fileId
*
* @throws GuzzleException
* @return void
*/
public function userCopiesOrMovesFileWithFileIdFromAndToSpaceBetweenSpaces(string $user, string $actionType, string $sourceFile, string $destinationFile, string $toSpaceName, string $url): void {
public function userCopiesMovesFileIntoInsideSpaceUsingFileId(string $user, string $actionType, string $sourceFile, string $destinationFile, string $toSpaceName, string $fileId): void {
// split the source when there are sub-folders
$sourceFile = \trim($sourceFile, "/");
$sourceFile = \explode("/", $sourceFile);
@@ -1995,15 +2021,17 @@ class SpacesContext implements Context {
} elseif ($actionType === 'renames') {
$fileDestination = $destinationFile;
}
$baseUrl = $this->featureContext->getBaseUrl();
$sourceDavPath = WebdavHelper::getDavPath($this->featureContext->getDavPathVersion());
if ($toSpaceName === 'Shares') {
$sharesPath = $this->featureContext->getSharesMountPath($user, $fileDestination);
$davPath = WebDavHelper::getDavPath($user, $this->featureContext->getDavPathVersion());
$headers['Destination'] = $baseUrl . "/$davPath" . $sharesPath;
$davPath = WebDavHelper::getDavPath($this->featureContext->getDavPathVersion());
$headers['Destination'] = "$baseUrl/$davPath/$sharesPath";
} else {
$headers['Destination'] = $this->destinationHeaderValueWithSpaceName($user, $fileDestination, $toSpaceName, $url);
$headers['Destination'] = $this->destinationHeaderValueWithSpaceName($user, $fileDestination, $toSpaceName, $fileId);
}
$fullUrl = $baseUrl . $url;
$fullUrl = "$baseUrl/$sourceDavPath/$fileId";
if ($actionType === 'copies') {
$this->featureContext->setResponse($this->copyFilesAndFoldersRequest($user, $fullUrl, $headers));
} elseif ($actionType === 'moves' || $actionType === 'renames') {
@@ -2012,15 +2040,14 @@ class SpacesContext implements Context {
}
/**
* @When /^user "([^"]*)" tries to move (?:file|folder) "([^"]*)" of space "([^"]*)" to (space|folder) "([^"]*)" using its id in destination path "([^"]*)"$/
* @When /^user "([^"]*)" moves (?:file|folder) "([^"]*)" of space "([^"]*)" to (folder) "([^"]*)" using its id in destination path "([^"]*)"$/
* @When /^user "([^"]*)" tries to move (?:file|folder) "([^"]*)" of space "([^"]*)" to (space|folder) "([^"]*)" using its id in destination path$/
* @When /^user "([^"]*)" moves (?:file|folder) "([^"]*)" of space "([^"]*)" to (folder) "([^"]*)" using its id in destination path$/
*
* @param string $user
* @param string $source
* @param string $sourceSpace
* @param string $destinationType
* @param string $destinationName
* @param string $destinationPath
*
* @throws GuzzleException
* @return void
@@ -2030,23 +2057,25 @@ class SpacesContext implements Context {
string $source,
string $sourceSpace,
string $destinationType,
string $destinationName,
string $destinationPath
string $destinationName
): void {
$source = \trim($source, "/");
$baseUrl = $this->featureContext->getBaseUrl();
$suffix = "";
if ($this->featureContext->getDavPathVersion() === WebDavHelper::DAV_VERSION_SPACES) {
$suffix = $this->getSpaceIdByName($user, $sourceSpace) . "/";
$davPathVersion = $this->featureContext->getDavPathVersion();
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $this->getSpaceIdByName($user, $sourceSpace);
}
$fullUrl = $baseUrl . \rtrim($destinationPath, "/") . "/$suffix$source";
$sourceDavPath = WebDavHelper::getDavPath($davPathVersion, $uniquePath);
$fullUrl = "$baseUrl/$sourceDavPath/$source";
if ($destinationType === "space") {
$destinationId = $this->getSpaceIdByName($user, $destinationName);
} else {
$destinationId = $this->getResourceId($user, $sourceSpace, $destinationName);
}
$headers['Destination'] = $baseUrl . \rtrim($destinationPath, "/") . "/$destinationId";
$destinationDavPath = WebDavHelper::getDavPath($davPathVersion);
$headers['Destination'] = "$baseUrl/$destinationDavPath/$destinationId";
$response = $this->moveFilesAndFoldersRequest($user, $fullUrl, $headers);
$this->featureContext->setResponse($response);
@@ -2520,9 +2549,14 @@ class SpacesContext implements Context {
string $spaceName
): ResponseInterface {
$space = $this->getSpaceByName($user, $spaceName);
$spaceWebDavUrl = $space["root"]["webDavUrl"] . '/' . ltrim($object, "/");
$encodedName = \rawurlencode(ltrim($object, "/"));
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$encodedName}";
return HttpRequestHelper::delete(
$spaceWebDavUrl,
$fullUrl,
$this->featureContext->getStepLineRef(),
$user,
$this->featureContext->getPasswordForUser($user)
@@ -2783,7 +2817,9 @@ class SpacesContext implements Context {
string $spaceName
): ResponseInterface {
$space = $this->getSpaceByName($user, $spaceName);
$fullUrl = $this->featureContext->getBaseUrl() . $this->davSpacesUrl . "trash-bin/" . $space["id"];
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebDavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"], "trash-bin");
$fullUrl = "{$baseUrl}/{$davPath}";
return HttpRequestHelper::sendRequest(
$fullUrl,
$this->featureContext->getStepLineRef(),
@@ -2826,7 +2862,9 @@ class SpacesContext implements Context {
): void {
// get space by admin user
$space = $this->getSpaceByName($this->featureContext->getAdminUserName(), $spaceName);
$fullUrl = $this->featureContext->getBaseUrl() . $this->davSpacesUrl . "trash-bin/" . $space["id"];
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebDavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"], "trash-bin");
$fullUrl = "{$baseUrl}/{$davPath}";
$this->featureContext->setResponse(
HttpRequestHelper::sendRequest($fullUrl, $this->featureContext->getStepLineRef(), 'PROPFIND', $user, $this->featureContext->getPasswordForUser($user))
);
@@ -2839,7 +2877,7 @@ class SpacesContext implements Context {
* and return array like:
* [1] => Array
* (
* [href] => /remote.php/dav/spaces/trash-bin/spaceId/objectId/
* [href] => /dav/spaces/trash-bin/spaceId/objectId/
* [name] => deleted folder
* [mtime] => 1649147272
* [original-location] => deleted folder
@@ -2931,10 +2969,12 @@ class SpacesContext implements Context {
throw new Exception(__METHOD__ . " Object '$object' was not found in the trashbin of space '$spaceName' by user '$user'");
}
$destination = $this->featureContext->getBaseUrl() . $this->davSpacesUrl . $space["id"] . $destination;
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebDavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$destination = "{$baseUrl}/{$davPath}/{$destination}";
$header = ["Destination" => $destination, "Overwrite" => "F"];
$fullUrl = $this->featureContext->getBaseUrl() . $pathToDeletedObject;
$fullUrl = $baseUrl . $pathToDeletedObject;
$this->featureContext->setResponse(
HttpRequestHelper::sendRequest(
$fullUrl,
@@ -3025,8 +3065,9 @@ class SpacesContext implements Context {
$urlParameters = \http_build_query($urlParameters, '', '&');
$space = $this->getSpaceByName($user, $spaceName);
$fullUrl = $this->featureContext->getBaseUrl() . $this->davSpacesUrl . $space['id'] . '/' . $fileName . '?' . $urlParameters;
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebDavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
$fullUrl = "{$baseUrl}/{$davPath}/{$fileName}?{$urlParameters}";
$this->featureContext->setResponse(
HttpRequestHelper::get(
$fullUrl,
@@ -3602,11 +3643,18 @@ class SpacesContext implements Context {
$splitSpaceName = explode("/", $spaceName);
$space = $this->getSpaceByName($user, $splitSpaceName[1]);
$splitSpaceId = explode("$", $space['id']);
$topWebDavPath = "/remote.php/dav/spaces/" . str_replace('!', '%21', $splitSpaceId[1]);
$spaceId = str_replace('!', '%21', $splitSpaceId[1]);
} else {
$space = $this->getSpaceByName($user, $spaceName);
$topWebDavPath = "/remote.php/dav/spaces/" . $space['id'];
$spaceId = $space['id'];
}
$uniquePath = $user;
$davPathVersion = $this->featureContext->getDavPathVersion();
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $spaceId;
}
$topWebDavPath = "/" . WebDavHelper::getDavPath($davPathVersion, $uniquePath);
$spaceFound = false;
foreach ($responseArray as $value) {
@@ -3938,13 +3986,13 @@ class SpacesContext implements Context {
$resource,
'0',
['oc:fileid'],
$this->featureContext->getDavPathVersion() === 1 ? "public-files" : "public-files-new"
"public-files"
);
$resourceId = json_decode(json_encode($response->xpath("//d:response/d:propstat/d:prop/oc:fileid")), true, 512, JSON_THROW_ON_ERROR);
$queryString = 'public-token=' . $token . '&id=' . $resourceId[0][0];
$this->featureContext->setResponse(
HttpRequestHelper::get(
$this->featureContext->getBaseUrl() . '/archiver?' . $queryString,
$this->archiverContext->getArchiverUrl($queryString),
$this->featureContext->getStepLineRef(),
'',
'',
@@ -4033,7 +4081,7 @@ class SpacesContext implements Context {
*/
public function userDownloadsTheSpaceUsingTheWebdavApi(string $user, string $spaceName, string $owner = ''):void {
$space = $this->getSpaceByName($owner ?: $user, $spaceName);
$url = $this->featureContext->getBaseUrl() . '/archiver?id=' . $space['id'];
$url = $this->archiverContext->getArchiverUrl('id=' . $space['id']);
$this->featureContext->setResponse(
HttpRequestHelper::get(
$url,

View File

@@ -304,15 +304,15 @@ class TUSContext implements Context {
'headers' => $headers
]
);
$davPathVersion = $this->featureContext->getDavPathVersion();
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $spaceId ?: $this->featureContext->getPersonalSpaceIdForUser($user);
}
$client->setChecksumAlgorithm('sha1');
$client->setApiPath(
WebDavHelper::getDavPath(
$user,
$this->featureContext->getDavPathVersion(),
"files",
$spaceId ?: $this->featureContext->getPersonalSpaceIdForUser($user)
)
);
$client->setApiPath(WebDavHelper::getDavPath($davPathVersion, $uniquePath));
$client->setMetadata($uploadMetadata);
$sourceFile = $this->featureContext->acceptanceTestsDirLocation() . $source;
$client->setKey((string)rand())->file($sourceFile, $destination);

View File

@@ -148,13 +148,25 @@ class TrashbinContext implements Context {
public function listTopOfTrashbinFolder(?string $user, string $depth = "1"):array {
$password = $this->featureContext->getPasswordForUser($user);
$davPathVersion = $this->featureContext->getDavPathVersion();
$uniquePath = $user;
$spaceId = null;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$spaceId = WebDavHelper::getPersonalSpaceIdForUser(
$this->featureContext->getBaseUrl(),
$user,
$password,
$this->featureContext->getStepLineRef()
);
$uniquePath = $spaceId;
}
$response = WebDavHelper::listFolder(
$this->featureContext->getBaseUrl(),
$user,
$password,
"",
$depth,
null,
$spaceId,
$this->featureContext->getStepLineRef(),
[
'oc:trashbin-original-filename',
@@ -176,8 +188,9 @@ class TrashbinContext implements Context {
// filter root element
$files = \array_filter(
$files,
static function ($element) use ($user) {
return ($element['href'] !== "/remote.php/dav/trash-bin/$user/");
static function ($element) use ($davPathVersion, $uniquePath) {
$davPath = WebDavHelper::getDavPath($davPathVersion, $uniquePath, "trash-bin");
return ($element['href'] !== "/" . $davPath . "/");
}
);
return $files;
@@ -247,17 +260,16 @@ class TrashbinContext implements Context {
$files = $this->getTrashbinContentFromResponseXml($responseXml);
// set endpoint according to webdav request (2 = new, 3 = spaces)
$endpoint = "/remote.php/dav/trash-bin/$user";
if ($davPathVersion === 3) {
$space_id = WebDavHelper::getPersonalSpaceIdForUser(
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = WebDavHelper::getPersonalSpaceIdForUser(
$this->featureContext->getBaseUrl(),
$user,
$this->featureContext->getPasswordForUser($user),
$this->featureContext->getStepLineRef()
);
$endpoint = "/remote.php/dav/spaces/trash-bin/$space_id";
}
$endpoint = WebDavHelper::getDavPath($davPathVersion, $uniquePath, "trash-bin");
// filter out the collection itself, we only want to return the members
$files = \array_filter(
@@ -267,7 +279,7 @@ class TrashbinContext implements Context {
if ($path !== "") {
$path = $path . "/";
}
return ($element['href'] !== "$endpoint/$path");
return ($element['href'] !== "/$endpoint/$path");
}
);
@@ -276,13 +288,8 @@ class TrashbinContext implements Context {
// avoid "common" situations that could cause infinite recursion.
$trashbinRef = $file["href"];
$trimmedTrashbinRef = \trim($trashbinRef, "/");
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$expectedStart = "remote.php/dav/spaces/trash-bin";
} else {
$expectedStart = "remote.php/dav/trash-bin/$user";
}
$expectedStartLength = \strlen($expectedStart);
if ((\substr($trimmedTrashbinRef, 0, $expectedStartLength) !== $expectedStart)
$expectedStartLength = \strlen($endpoint);
if ((\substr($trimmedTrashbinRef, 0, $expectedStartLength) !== $endpoint)
|| (\strlen($trimmedTrashbinRef) === $expectedStartLength)
) {
// A top href (maybe without even the username) has been returned
@@ -338,7 +345,7 @@ class TrashbinContext implements Context {
*/
public function theTrashbinDavResponseShouldNotContainTheseNodes(TableNode $table):void {
$this->featureContext->verifyTableNodeColumns($table, ['name']);
$responseXml = $this->featureContext->getResponseXmlObject();
$responseXml = $this->featureContext->getResponseXml();
$files = $this->getTrashbinContentFromResponseXml($responseXml);
foreach ($table->getHash() as $row) {
@@ -361,7 +368,7 @@ class TrashbinContext implements Context {
*/
public function theTrashbinDavResponseShouldContainTheseNodes(TableNode $table):void {
$this->featureContext->verifyTableNodeColumns($table, ['name']);
$responseXml = $this->featureContext->getResponseXmlObject();
$responseXml = $this->featureContext->getResponseXml();
$files = $this->getTrashbinContentFromResponseXml($responseXml);
@@ -387,16 +394,16 @@ class TrashbinContext implements Context {
* @param string|null $asUser - To send request as another user
* @param string|null $password
*
* @return void
* @return ResponseInterface
* @throws Exception
*/
public function sendTrashbinListRequest(string $user, ?string $asUser = null, ?string $password = null):void {
public function sendTrashbinListRequest(string $user, ?string $asUser = null, ?string $password = null): ResponseInterface {
$asUser = $asUser ?? $user;
$password = $password ?? $this->featureContext->getPasswordForUser($asUser);
$davPathVersion = $this->featureContext->getDavPathVersion();
$response = WebDavHelper::propfind(
return WebDavHelper::propfind(
$this->featureContext->getBaseUrl(),
$asUser,
$user,
$password,
null,
[
@@ -409,19 +416,9 @@ class TrashbinContext implements Context {
'1',
null,
'trash-bin',
$davPathVersion,
$user
$this->featureContext->getDavPathVersion(),
$asUser
);
$this->featureContext->setResponse($response);
try {
$responseXmlObject = HttpRequestHelper::getResponseXml(
$response,
__METHOD__
);
$this->featureContext->setResponseXmlObject($responseXmlObject);
} catch (Exception $e) {
$this->featureContext->clearResponseXmlObject();
}
}
/**
@@ -436,7 +433,8 @@ class TrashbinContext implements Context {
public function userTriesToListTheTrashbinContentForUser(string $asUser, string $user) {
$user = $this->featureContext->getActualUsername($user);
$asUser = $this->featureContext->getActualUsername($asUser);
$this->sendTrashbinListRequest($user, $asUser);
$response = $this->sendTrashbinListRequest($user, $asUser);
$this->featureContext->setResponse($response);
}
/**
@@ -450,7 +448,8 @@ class TrashbinContext implements Context {
* @throws Exception
*/
public function userTriesToListTheTrashbinContentForUserUsingPassword(string $asUser, string $user, string $password):void {
$this->sendTrashbinListRequest($user, $asUser, $password);
$response = $this->sendTrashbinListRequest($user, $asUser, $password);
$this->featureContext->setResponse($response);
}
/**
@@ -461,7 +460,7 @@ class TrashbinContext implements Context {
* @return void
*/
public function theLastWebdavResponseShouldContainFollowingElements(TableNode $elements):void {
$files = $this->getTrashbinContentFromResponseXml($this->featureContext->getResponseXmlObject());
$files = $this->getTrashbinContentFromResponseXml($this->featureContext->getResponseXml());
$elementRows = $elements->getHash();
foreach ($elementRows as $expectedElement) {
$found = false;
@@ -485,7 +484,7 @@ class TrashbinContext implements Context {
* @throws Exception
*/
public function theLastWebdavResponseShouldNotContainFollowingElements(TableNode $elements):void {
$files = $this->getTrashbinContentFromResponseXml($this->featureContext->getResponseXmlObject());
$files = $this->getTrashbinContentFromResponseXml($this->featureContext->getResponseXml());
// 'user' is also allowed in the table even though it is not used anywhere
// This for better readability in feature files
@@ -576,7 +575,7 @@ class TrashbinContext implements Context {
}
/**
* converts the trashItemHRef from /<base>/remote.php/dav/trash-bin/<user>/<item_id>/ to /trash-bin/<user>/<item_id>
* converts the trashItemHRef from /<base>/dav/trash-bin/<user>/<item_id>/ to /trash-bin/<user>/<item_id>
*
* @param string $href
*
@@ -787,24 +786,43 @@ class TrashbinContext implements Context {
*/
private function sendUndeleteRequest(string $user, string $trashItemHRef, string $destinationPath, ?string $asUser = null, ?string $password = null):ResponseInterface {
$asUser = $asUser ?? $user;
$password = $password ?? $this->featureContext->getPasswordForUser($asUser);
$destinationPath = \trim($destinationPath, '/');
$destinationValue = $this->featureContext->getBaseUrl() . "/remote.php/dav/files/$user/$destinationPath";
$baseUrl = $this->featureContext->getBaseUrl();
$davPathVersion = $this->featureContext->getDavPathVersion();
$trashItemHRef = $this->convertTrashbinHref($trashItemHRef);
$headers['Destination'] = $destinationValue;
$uniquePath = $asUser;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
if (\str_starts_with($destinationPath, "Shares/")) {
$uniquePath = $this->featureContext->spacesContext->getSpaceIdByName($user, "Shares");
$destinationPath = \str_replace("Shares/", "", $destinationPath);
} else {
$uniquePath = WebDavHelper::getPersonalSpaceIdForUser(
$baseUrl,
$asUser,
$password,
$this->featureContext->getStepLineRef()
);
}
}
$destinationDavPath = WebDavHelper::getDavPath($davPathVersion, $uniquePath);
$destination = "{$baseUrl}/{$destinationDavPath}/{$destinationPath}";
$trashItemHRef = \ltrim($this->convertTrashbinHref($trashItemHRef), "/");
$headers['Destination'] = $destination;
return $this->featureContext->makeDavRequest(
$asUser,
$user,
'MOVE',
$trashItemHRef,
$headers,
null,
null,
'trash-bin',
'2',
$davPathVersion,
false,
$password,
[],
$user
$asUser
);
}
@@ -1133,7 +1151,7 @@ class TrashbinContext implements Context {
*/
public function theDeletedFileFolderShouldHaveCorrectDeletionMtimeInTheResponse(string $resource):void {
$files = $this->getTrashbinContentFromResponseXml(
$this->featureContext->getResponseXmlObject()
$this->featureContext->getResponseXml()
);
$found = false;

View File

@@ -37,9 +37,9 @@ use TestHelpers\GraphHelper;
* WebDav functions
*/
trait WebDav {
private string $davPath = "remote.php/webdav";
private bool $usingOldDavPath = true;
private bool $usingSpacesDavPath = false;
// defaults to the new DAV path
// maybe we want to make spaces the default in the future
private int $currentDAVPath = WebDavHelper::DAV_VERSION_NEW;
/**
* @var ResponseInterface[]
@@ -53,12 +53,6 @@ trait WebDav {
private ?int $lastUploadDeleteTime = null;
/**
* a variable that contains the DAV path without "remote.php/(web)dav"
* when setting $this->davPath directly by usingDavPath()
*/
private ?string $customDavPath = null;
/**
* response content parsed from XML to an array
*/
@@ -125,13 +119,6 @@ trait WebDav {
return $this->lastUploadDeleteTime;
}
/**
* @return SimpleXMLElement|null
*/
public function getResponseXmlObject():?SimpleXMLElement {
return $this->responseXmlObject;
}
/**
* @param SimpleXMLElement $responseXmlObject
*
@@ -203,83 +190,33 @@ trait WebDav {
}
/**
* @return string
*/
public function getOldDavPath():string {
return "remote.php/webdav";
}
/**
* @return string
*/
public function getNewDavPath():string {
return "remote.php/dav";
}
/**
* @return string
*/
public function getSpacesDavPath():string {
return "dav/spaces";
}
/**
* @Given /^using (old|new|spaces) (?:dav|DAV) path$/
* @Given /^using (old|new|spaces) DAV path$/
*
* @param string $davChoice
*
* @return void
*/
public function usingOldOrNewDavPath(string $davChoice):void {
if ($davChoice === 'old') {
$this->usingOldDavPath();
} elseif ($davChoice === 'new') {
$this->usingNewDavPath();
} else {
$this->usingSpacesDavPath();
public function usingOldOrNewOrSpacesDavPath(string $davChoice):void {
switch ($davChoice) {
case 'old':
$this->currentDAVPath = WebDavHelper::DAV_VERSION_OLD;
break;
case 'new':
$this->currentDAVPath = WebDavHelper::DAV_VERSION_NEW;
break;
case 'spaces':
$this->currentDAVPath = WebDavHelper::DAV_VERSION_SPACES;
break;
default:
throw new Exception("Invalid DAV path: $davChoice");
break;
}
}
/**
* Select the old DAV path as the default for later scenario steps
*
* @return void
*/
public function usingOldDavPath():void {
$this->davPath = $this->getOldDavPath();
$this->usingOldDavPath = true;
$this->customDavPath = null;
$this->usingSpacesDavPath = false;
}
/**
* Select the new DAV path as the default for later scenario steps
*
* @return void
*/
public function usingNewDavPath():void {
$this->davPath = $this->getNewDavPath();
$this->usingOldDavPath = false;
$this->customDavPath = null;
$this->usingSpacesDavPath = false;
}
/**
* Select the spaces dav path as the default for later scenario steps
*
* @return void
*/
public function usingSpacesDavPath():void {
$this->davPath = $this->getSpacesDavPath();
$this->usingOldDavPath = false;
$this->customDavPath = null;
$this->usingSpacesDavPath = true;
}
/**
* gives the DAV path of a file including the subfolder of the webserver
* e.g. when the server runs in `http://localhost/owncloud/`
* this function will return `owncloud/remote.php/webdav/prueba.txt`
* this function will return `owncloud/webdav/prueba.txt`
*
* @param string $user
* @param string $spaceId
@@ -296,21 +233,27 @@ trait WebDav {
$this->getStepLineRef()
);
}
$path = $this->getBasePath() . "/" .
WebDavHelper::getDavPath($user, $this->getDavPathVersion(), "files", $spaceId);
$davPathVersion = $this->getDavPathVersion();
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $spaceId;
}
$davPath = WebDavHelper::getDavPath($davPathVersion, $uniquePath);
$path = "{$this->getBasePath()}/{$davPath}";
$path = WebDavHelper::sanitizeUrl($path);
return \ltrim($path, "/");
}
/**
* @param string $token
* @param string $type
*
* @return string
*/
public function getPublicLinkDavPath(string $token, string $type):string {
$path = $this->getBasePath() . "/" .
WebDavHelper::getDavPath($token, $this->getDavPathVersion(), $type);
public function getPublicLinkDavPath(string $token):string {
$davPath = WebDavHelper::getDavPath($this->getDavPathVersion(), $token, "public-files");
$path = "{$this->getBasePath()}/{$davPath}";
$path = WebDavHelper::sanitizeUrl($path);
return \ltrim($path, "/");
}
@@ -326,45 +269,12 @@ trait WebDav {
* @return int DAV path version (1, 2 or 3) selected, or appropriate for the endpoint
*/
public function getDavPathVersion(?string $for = null):?int {
if ($this->usingSpacesDavPath) {
return WebDavHelper::DAV_VERSION_SPACES;
}
if ($for === 'systemtags') {
// systemtags only exists since DAV v2
if (\in_array($for, ['systemtags', 'file_versions'])) {
// 'systemtags' only exists since new DAV
// 'file_versions' only exists since new DAV
return WebDavHelper::DAV_VERSION_NEW;
}
if ($for === 'file_versions') {
// file_versions only exists since DAV v2
return WebDavHelper::DAV_VERSION_NEW;
}
if ($this->usingOldDavPath === true) {
return WebDavHelper::DAV_VERSION_OLD;
} else {
return WebDavHelper::DAV_VERSION_NEW;
}
}
/**
* Select a suitable DAV path.
* Some endpoints have only existed since a certain point in time, so for
* those make sure to return a DAV path that works for that endpoint.
* Otherwise return the currently selected DAV path.
*
* @param string|null $for the category of endpoint that the DAV path will be used for
*
* @return string DAV path selected, or appropriate for the endpoint
*/
public function getDavPath(?string $for = null):string {
$davPathVersion = $this->getDavPathVersion($for);
if ($davPathVersion === WebDavHelper::DAV_VERSION_OLD) {
return $this->getOldDavPath();
}
if ($davPathVersion === WebDavHelper::DAV_VERSION_NEW) {
return $this->getNewDavPath();
}
return $this->getSpacesDavPath();
return $this->currentDAVPath;
}
/**
@@ -396,7 +306,7 @@ trait WebDav {
$body = null,
?string $spaceId = null,
?string $type = "files",
?string $davPathVersion = null,
?int $davPathVersion = null,
bool $stream = false,
?string $password = null,
?array $urlParameter = [],
@@ -404,9 +314,6 @@ trait WebDav {
?bool $isGivenStep = false
):ResponseInterface {
$user = $this->getActualUsername($user);
if ($this->customDavPath !== null) {
$path = $this->customDavPath . $path;
}
if ($davPathVersion === null) {
$davPathVersion = $this->getDavPathVersion();
@@ -454,7 +361,6 @@ trait WebDav {
* @throws GuzzleException | JsonException
*/
public function createFolder(string $user, string $folder, ?bool $isGivenStep = false, ?string $password = null, ?string $spaceId=null): ResponseInterface {
$folder = '/' . \ltrim($folder, '/');
return $this->makeDavRequest(
$user,
"MKCOL",
@@ -485,10 +391,11 @@ trait WebDav {
public function downloadPreviews(string $user, ?string $path, ?string $doDavRequestAsUser, ?string $width, ?string $height):ResponseInterface {
$user = $this->getActualUsername($user);
$doDavRequestAsUser = $this->getActualUsername($doDavRequestAsUser);
$doDavRequestAsUser = $doDavRequestAsUser ?? $user;
$password = $this->getPasswordForUser($doDavRequestAsUser);
$urlParameter = [
'x' => $width,
'y' => $height,
'forceIcon' => '0',
'preview' => '1'
];
return $this->makeDavRequest(
@@ -501,7 +408,7 @@ trait WebDav {
"files",
null,
false,
null,
$password,
$urlParameter,
$doDavRequestAsUser
);
@@ -516,7 +423,7 @@ trait WebDav {
* @throws Exception
*/
public function theNumberOfVersionsShouldBe(int $number):void {
$resXml = $this->getResponseXmlObject();
$resXml = $this->getResponseXml();
if ($resXml === null) {
$resXml = HttpRequestHelper::getResponseXml(
$this->getResponse(),
@@ -542,7 +449,7 @@ trait WebDav {
* @throws Exception
*/
public function theNumberOfEtagElementInTheResponseShouldBe(int $number):void {
$resXml = $this->getResponseXmlObject();
$resXml = $this->getResponseXml();
if ($resXml === null) {
$resXml = HttpRequestHelper::getResponseXml(
$this->getResponse(),
@@ -575,8 +482,15 @@ trait WebDav {
$fileDestination = \preg_replace("/^Shares\//", "", $fileDestination);
}
}
$fullUrl = $this->getBaseUrl() . '/' .
WebDavHelper::getDavPath($user, $this->getDavPathVersion(), "files", $spaceId);
$davPathVersion = $this->getDavPathVersion();
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $spaceId;
}
$davPath = WebDavHelper::getDavPath($davPathVersion, $uniquePath);
$fullUrl = $this->getBaseUrl() . "/$davPath";
return \rtrim($fullUrl, '/') . '/' . $fileDestination;
}
@@ -1199,7 +1113,8 @@ trait WebDav {
*/
public function publicGetsSizeOfLastSharedPublicLinkUsingTheWebdavApi():void {
$token = ($this->isUsingSharingNG()) ? $this->shareNgGetLastCreatedLinkShareToken() : $this->getLastCreatedPublicShareToken();
$url = $this->getBaseUrl() . "/remote.php/dav/public-files/$token";
$davPath = WebDavHelper::getDavPath($this->getDavPathVersion(), $token, "public-files");
$url = "{$this->getBaseUrl()}/{$davPath}";
$this->response = HttpRequestHelper::sendRequest(
$url,
$this->getStepLineRef(),
@@ -1532,10 +1447,6 @@ trait WebDav {
?string $spaceId = null,
string $type = "files"
):ResponseInterface {
if ($this->customDavPath !== null) {
$path = $this->customDavPath . $path;
}
return WebDavHelper::listFolder(
$this->getBaseUrl(),
$this->getActualUsername($user),
@@ -1844,9 +1755,9 @@ trait WebDav {
$noOfChunks,
"What does it mean to have $noOfChunks chunks?"
);
//use the chunking version that works with the set DAV version
// use the chunking version that works with the set DAV version
if ($chunkingVersion === null) {
if ($this->usingOldDavPath || $this->usingSpacesDavPath) {
if (\in_array($this->currentDAVPath, [WebDavHelper::DAV_VERSION_OLD, WebDavHelper::DAV_VERSION_SPACES])) {
$chunkingVersion = "v1";
} else {
$chunkingVersion = "v2";
@@ -2297,6 +2208,11 @@ trait WebDav {
): ResponseInterface {
$user = $this->getActualUsername($user);
$this->pauseUploadDelete();
if (\str_starts_with($destination, "Shares/") && $this->getDavPathVersion() === WebDavHelper::DAV_VERSION_SPACES) {
$spaceId = $this->spacesContext->getSpaceIdByName($user, "Shares");
$destination = \str_replace("Shares/", "", $destination);
}
$response = $this->makeDavRequest(
$user,
"PUT",
@@ -2731,21 +2647,23 @@ trait WebDav {
}
/**
* @When user :user deletes file :filename from space :space using file-id path :davPath
* @When user :user deletes file :filename from space :space using file-id :fileId
*
* @param string $user
* @param string $filename
* @param string $space
* @param string $davPath
* @param string $fileId
*
* @return void
*/
public function userDeletesFileFromSpaceUsingFileIdPath(string $user, string $filename, string $space, string $davPath):void {
$requestUrl = $this->getBaseUrl() . $davPath;
public function userDeletesFileFromSpaceUsingFileIdPath(string $user, string $filename, string $space, string $fileId):void {
$baseUrl = $this->getBaseUrl();
$davPath = WebDavHelper::getDavPath($this->getDavPathVersion());
$user = $this->getActualUsername($user);
$password = $this->getPasswordForUser($user);
$fullUrl = "$baseUrl/$davPath/$fileId";
$response = HttpRequestHelper::sendRequest(
$requestUrl,
$fullUrl,
null,
'DELETE',
$user,
@@ -3764,7 +3682,7 @@ trait WebDav {
* @return void
*/
public function userDownloadsThePreviewOfSharedResourceWithWidthAndHeightUsingTheWebdavApi(string $user, string $path, string $width, string $height): void {
if ($this->getDavPathVersion() === 3) {
if ($this->getDavPathVersion() === WebDavHelper::DAV_VERSION_SPACES) {
$this->setResponse($this->downloadSharedFilePreview($user, $path, $width, $height));
} else {
$this->setResponse($this->downloadPreviews($user, $path, null, $width, $height));
@@ -3817,7 +3735,7 @@ trait WebDav {
* @return void
*/
public function userHasDownloadedThePreviewOfSharedResourceWithWidthAndHeight(string $user, string $path, string $width, string $height): void {
if ($this->getDavPathVersion() === 3) {
if ($this->getDavPathVersion() === WebDavHelper::DAV_VERSION_SPACES) {
$response = $this->downloadSharedFilePreview($user, $path, $width, $height);
} else {
$response = $this->downloadPreviews($user, $path, null, $width, $height);
@@ -3841,7 +3759,7 @@ trait WebDav {
* @return void
*/
public function asUserThePreviewOfSharedResourceWithWidthAndHeightShouldHaveBeenChanged(string $user, string $path, string $width, string $height):void {
if ($this->getDavPathVersion() === 3) {
if ($this->getDavPathVersion() === WebDavHelper::DAV_VERSION_SPACES) {
$response = $this->downloadSharedFilePreview($user, $path, $width, $height);
} else {
$response = $this->downloadPreviews($user, $path, null, $width, $height);
@@ -3870,11 +3788,7 @@ trait WebDav {
* @return void
*/
public function userUploadsFileWithContentSharedResourceToUsingTheWebdavApi(string $user, string $content, string $destination): void {
if ($this->getDavPathVersion() === 3) {
$this->setResponse($this->uploadToSharedFolder($user, $destination, $content));
} else {
$this->setResponse($this->uploadFileWithContent($user, $content, $destination, null));
}
$this->setResponse($this->uploadFileWithContent($user, $content, $destination));
}
/**
@@ -3933,10 +3847,17 @@ trait WebDav {
} else {
$urlParameter = null;
}
$sharesPath = $this->getSharesMountPath($user, $path) . '/?' . $urlParameter;
$davPath = WebDavHelper::getDavPath($user, $this->getDavPathVersion());
$fullUrl = $this->getBaseUrl() . "/$davPath" . $sharesPath;
$davPathVersion = $this->getDavPathVersion();
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $this->getSharesMountPath($user, $path);
$path = "";
}
$path = \ltrim($path, "/");
$davPath = WebDavHelper::getDavPath($this->getDavPathVersion(), $uniquePath);
$davPath = \rtrim($davPath, "/");
$fullUrl = $this->getBaseUrl() . "/$davPath/$path?$urlParameter";
return HttpRequestHelper::sendRequest(
$fullUrl,
@@ -3948,50 +3869,21 @@ trait WebDav {
}
/**
* @When user :user downloads the preview of :path of :ofUser with width :width and height :height using the WebDAV API
*
* @param string $user
* @param string $destination
* @param string|null $content
*
* @return ResponseInterface
* @throws GuzzleException
*/
public function uploadToSharedFolder(
string $user,
string $destination,
?string $content = null
): ResponseInterface {
$sharesPath = $this->getSharesMountPath($user, $destination);
$davPath = WebDavHelper::getDavPath($user, $this->getDavPathVersion());
$fullUrl = $this->getBaseUrl() . "/$davPath" . $sharesPath;
return HttpRequestHelper::sendRequest(
$fullUrl,
$this->getStepLineRef(),
'PUT',
$user,
$this->getPasswordForUser($user),
null,
$content
);
}
/**
* @When user :user1 downloads the preview of :path of :user2 with width :width and height :height using the WebDAV API
*
* @param string $user1
* @param string $path
* @param string $doDavRequestAsUser
* @param string $ofUser
* @param string $width
* @param string $height
*
* @return void
*/
public function downloadPreviewOfOtherUser(string $user1, string $path, string $doDavRequestAsUser, string $width, string $height):void {
public function downloadPreviewOfOtherUser(string $user, string $path, string $ofUser, string $width, string $height):void {
$response = $this->downloadPreviews(
$user1,
$ofUser,
$path,
$doDavRequestAsUser,
$user,
$width,
$height
);
@@ -4193,9 +4085,7 @@ trait WebDav {
?string $folderpath = '',
?string $spaceId = null
):void {
if ($folderpath === "/") {
$folderpath = "";
}
$folderpath = \trim($folderpath, "/");
$this->verifyTableNodeColumnsCount($expectedFiles, 1);
$elementRows = $expectedFiles->getRows();
$should = ($shouldOrNot !== "not");
@@ -4478,10 +4368,10 @@ trait WebDav {
public function theLastPublicDavResponseShouldContainTheseNodes(TableNode $table):void {
$token = ($this->isUsingSharingNG()) ? $this->shareNgGetLastCreatedLinkShareToken() : $this->getLastCreatedPublicShareToken();
$this->verifyTableNodeColumns($table, ["name"]);
$type = $this->usingOldDavPath ? "public-files" : "public-files-new";
foreach ($table->getHash() as $row) {
$path = $this->substituteInLineCodes($row['name']);
$res = $this->findEntryFromPropfindResponse($path, $token, $type);
$res = $this->findEntryFromPropfindResponse($path, $token, "public-files");
Assert::assertNotFalse($res, "expected $path to be in DAV response but was not found");
}
}
@@ -4497,10 +4387,10 @@ trait WebDav {
public function theLastPublicDavResponseShouldNotContainTheseNodes(TableNode $table):void {
$token = ($this->isUsingSharingNG()) ? $this->shareNgGetLastCreatedLinkShareToken() : $this->getLastCreatedPublicShareToken();
$this->verifyTableNodeColumns($table, ["name"]);
$type = $this->usingOldDavPath ? "public-files" : "public-files-new";
foreach ($table->getHash() as $row) {
$path = $this->substituteInLineCodes($row['name']);
$res = $this->findEntryFromPropfindResponse($path, $token, $type);
$res = $this->findEntryFromPropfindResponse($path, $token, "public-files");
Assert::assertFalse($res, "expected $path to not be in DAV response but was found");
}
}
@@ -4515,13 +4405,14 @@ trait WebDav {
*/
public function thePublicListsTheResourcesInTheLastCreatedPublicLinkWithDepthUsingTheWebdavApi(string $depth):void {
$token = ($this->isUsingSharingNG()) ? $this->shareNgGetLastCreatedLinkShareToken() : $this->getLastCreatedPublicShareToken();
// https://drone.owncloud.com/owncloud/ocis/39693/29/6
$response = $this->listFolder(
$token,
'/',
$depth,
null,
null,
$this->usingOldDavPath ? "public-files" : "public-files-new"
"public-files"
);
$this->setResponse($response);
$this->setResponseXml(HttpRequestHelper::parseResponseAsXml($this->response));
@@ -4533,7 +4424,7 @@ trait WebDav {
* @return array
*/
public function findEntryFromReportResponse(?string $user):array {
$responseXmlObj = $this->getResponseXmlObject();
$responseXmlObj = $this->getResponseXml();
$responseResources = [];
$hrefs = $responseXmlObj->xpath('//d:href');
foreach ($hrefs as $href) {
@@ -4648,16 +4539,13 @@ trait WebDav {
}
// url encode for spaces and brackets that may appear in the filePath
$folderPath = $this->escapePath($folderPath);
// topWebDavPath should be something like /remote.php/webdav/ or
// /remote.php/dav/files/alice/
// topWebDavPath should be something like '/webdav/' or '/dav/files/{user}/'
$topWebDavPath = "/" . $this->getFullDavFilesPath($user, $spaceId) . "/" . $folderPath;
switch ($type) {
case "files":
break;
case "public-files":
case "public-files-old":
case "public-files-new":
$topWebDavPath = "/" . $this->getPublicLinkDavPath($user, $type) . "/";
$topWebDavPath = "/" . $this->getPublicLinkDavPath($user) . "/";
break;
default:
throw new Exception("error");
@@ -4705,18 +4593,27 @@ trait WebDav {
if ($entryNameToSearch !== null) {
$entryNameToSearch = \trim($entryNameToSearch, "/");
}
$spacesBaseUrl = "/" . webDavHelper::getDavPath(null, webDavHelper::DAV_VERSION_SPACES, 'files', $spaceId);
$spacesBaseUrl = "/" . WebDavHelper::getDavPath($this->getDavPathVersion(), $spaceId);
$spacesBaseUrl = \rtrim($spacesBaseUrl, "/") . "/";
$hrefRegex = \preg_quote($spacesBaseUrl, "/");
if (\in_array($this->getDavPathVersion(), [WebDavHelper::DAV_VERSION_SPACES, WebDavHelper::DAV_VERSION_NEW])
&& !GraphHelper::isSpaceId($entryNameToSearch ?? '')
) {
$hrefRegex .= "[a-zA-Z0-9-_$!:%]+";
}
$hrefRegex = "/^" . $hrefRegex . "/";
$searchResults = $this->getResponseXml()->xpath("//d:multistatus/d:response");
$results = [];
foreach ($searchResults as $item) {
$href = (string)$item->xpath("d:href")[0];
$shareRootXml = $item->xpath("d:propstat//oc:shareroot");
$href = \str_replace($spacesBaseUrl, "", $href);
$resourcePath = $href;
$resourcePath = \preg_replace($hrefRegex, "", $href);
// do not try to parse the resource path
// if the item to search is space itself
if (!GraphHelper::isSpaceId($entryNameToSearch ?? '')) {
$resourcePath = \substr($href, \strpos($href, '/') + 1);
$resourcePath = \substr($resourcePath, \strpos($resourcePath, '/') + 1);
}
if (\count($shareRootXml)) {
$shareroot = \trim((string)$shareRootXml[0], "/");
@@ -4787,7 +4684,7 @@ trait WebDav {
*/
public function checkAuthorOfAVersionOfFile(string $index, string $expectedUsername):void {
$expectedUserDisplayName = $this->getUserDisplayName($expectedUsername);
$resXml = $this->getResponseXmlObject();
$resXml = $this->getResponseXml();
if ($resXml === null) {
$resXml = HttpRequestHelper::getResponseXml(
$this->getResponse(),

View File

@@ -71,9 +71,8 @@ class WebDavLockingContext implements Context {
?string $spaceId = null
):ResponseInterface {
$user = $this->featureContext->getActualUsername($user);
$baseUrl = $this->featureContext->getBaseUrl();
if ($public === true) {
$type = "public-files-new";
$type = "public-files";
$password = $this->featureContext->getActualPassword("%public%");
} else {
$type = "files";
@@ -108,6 +107,7 @@ class WebDavLockingContext implements Context {
$body
);
} else {
$baseUrl = $this->featureContext->getBaseUrl();
$response = WebDavHelper::makeDavRequest(
$baseUrl,
$user,
@@ -145,7 +145,12 @@ class WebDavLockingContext implements Context {
* @return void
*/
public function userLocksFileSettingPropertiesUsingWebDavAPI(string $user, string $file, TableNode $properties) {
$response = $this->lockFile($user, $file, $properties);
$spaceId = null;
if (\str_starts_with($file, "Shares/") && $this->featureContext->getDavPathVersion() === WebDavHelper::DAV_VERSION_SPACES) {
$spaceId = $this->spacesContext->getSpaceIdByName($user, "Shares");
$file = \str_replace("Shares/", "", $file);
}
$response = $this->lockFile($user, $file, $properties, null, false, true, $spaceId);
$this->featureContext->setResponse($response);
}
@@ -190,7 +195,15 @@ class WebDavLockingContext implements Context {
*/
public function userLocksFileInProjectSpace(string $user, string $file, string $space, TableNode $properties): ?ResponseInterface {
$spaceId = $this->spacesContext->getSpaceIdByName($user, $space);
$fullUrl = $this->featureContext->getBaseUrl() . '/dav/spaces/' . $spaceId . '/' . $file;
$baseUrl = $this->featureContext->getBaseUrl();
$davPathVersion = $this->featureContext->getDavPathVersion();
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $spaceId;
}
$davPath = WebDavHelper::getDavPath($davPathVersion, $uniquePath);
$fullUrl = "$baseUrl/$davPath/$file";
return $this->lockFile($user, $file, $properties, $fullUrl, false, true, $spaceId);
}
@@ -222,39 +235,50 @@ class WebDavLockingContext implements Context {
*/
public function userTriesToLockFileInProjectSpaceUsingWebDavAPI(string $user, string $file, string $space, TableNode $properties) {
$spaceId = $this->spacesContext->getSpaceIdByName($user, $space);
$fullUrl = $this->featureContext->getBaseUrl() . '/dav/spaces/' . $spaceId . '/' . $file;
$davPathVersion = $this->featureContext->getDavPathVersion();
$uniquePath = $user;
if ($davPathVersion === WebDavHelper::DAV_VERSION_SPACES) {
$uniquePath = $spaceId;
}
$davPath = WebdavHelper::getDavPath($davPathVersion, $uniquePath);
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$file";
$response = $this->lockFile($user, $file, $properties, $fullUrl, false, false, $spaceId);
$this->featureContext->setResponse($response);
}
/**
* @When user :user locks file :file using file-id path :path using the WebDAV API setting the following properties
* @When user :user locks file :file using file-id :fileId using the WebDAV API setting the following properties
*
* @param string $user
* @param string $file
* @param string $filePath
* @param string $fileId
* @param TableNode $properties table with no heading with | property | value |
*
* @return void
*/
public function userLocksFileUsingFileIdUsingWebDavAPI(string $user, string $file, string $filePath, TableNode $properties) {
$fullUrl = $this->featureContext->getBaseUrl() . $filePath;
public function userLocksFileUsingFileIdUsingWebDavAPISettingFollowingProperties(string $user, string $file, string $fileId, TableNode $properties) {
$davPath = WebdavHelper::getDavPath($this->featureContext->getDavPathVersion());
$davPath = \rtrim($davPath, '/');
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$fileId";
$response = $this->lockFile($user, $file, $properties, $fullUrl);
$this->featureContext->setResponse($response);
}
/**
* @When user :user tries to lock file :file using file-id path :path using the WebDAV API setting the following properties
* @When user :user tries to lock file :file using file-id :fileId using the WebDAV API setting the following properties
*
* @param string $user
* @param string $file
* @param string $filePath
* @param string $fileId
* @param TableNode $properties table with no heading with | property | value |
*
* @return void
*/
public function userTriesToLockFileUsingFileIdUsingWebDavAPI(string $user, string $file, string $filePath, TableNode $properties) {
$fullUrl = $this->featureContext->getBaseUrl() . $filePath;
public function userTriesToLockFileUsingFileIdUsingWebDavAPI(string $user, string $file, string $fileId, TableNode $properties) {
$davPath = WebdavHelper::getDavPath($this->featureContext->getDavPathVersion());
$davPath = \rtrim($davPath, '/');
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$fileId";
$response = $this->lockFile($user, $file, $properties, $fullUrl, false, false);
$this->featureContext->setResponse($response);
}
@@ -290,17 +314,19 @@ class WebDavLockingContext implements Context {
}
/**
* @Given user :user has locked file :file using file-id path :path setting the following properties
* @Given user :user has locked file :file using file-id :fileId setting the following properties
*
* @param string $user
* @param string $file
* @param string $filePath
* @param string $fileId
* @param TableNode $properties table with no heading with | property | value |
*
* @return void
*/
public function userHasLockedFileUsingFileId(string $user, string $file, string $filePath, TableNode $properties) {
$fullUrl = $this->featureContext->getBaseUrl() . $filePath;
public function userHasLockedFileUsingFileId(string $user, string $file, string $fileId, TableNode $properties) {
$davPath = WebdavHelper::getDavPath($this->featureContext->getDavPathVersion());
$davPath = \rtrim($davPath, '/');
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$fileId";
$response = $this->lockFile($user, $file, $properties, $fullUrl);
$this->featureContext->theHTTPStatusCodeShouldBe(200, '', $response);
}
@@ -436,16 +462,18 @@ class WebDavLockingContext implements Context {
}
/**
* @When user :user unlocks the last created lock of file :itemToUnlock using file-id path :filePath using the WebDAV API
* @When user :user unlocks the last created lock of file :itemToUnlock using file-id :fileId using the WebDAV API
*
* @param string $user
* @param string $itemToUnlock
* @param string $filePath
* @param string $fileId
*
* @return void
*/
public function userUnlocksTheLastCreatedLockOfFileWithFileIdPathUsingTheWebdavApi(string $user, string $itemToUnlock, string $filePath) {
$fullUrl = $this->featureContext->getBaseUrl() . $filePath;
public function userUnlocksTheLastCreatedLockOfFileWithFileIdPathUsingTheWebdavApi(string $user, string $itemToUnlock, string $fileId) {
$davPath = WebdavHelper::getDavPath($this->featureContext->getDavPathVersion());
$davPath = \rtrim($davPath, '/');
$fullUrl = $this->featureContext->getBaseUrl() . "/$davPath/$fileId";
$response = $this->unlockItemWithLastLockOfUserAndItemUsingWebDavAPI($user, $itemToUnlock, $user, $itemToUnlock, false, $fullUrl);
$this->featureContext->setResponse($response);
}
@@ -603,7 +631,7 @@ class WebDavLockingContext implements Context {
$user = $this->featureContext->getActualUsername($user);
$lockOwner = $this->featureContext->getActualUsername($lockOwner);
if ($public === true) {
$type = "public-files-new";
$type = "public-files";
$password = $this->featureContext->getActualPassword("%public%");
} else {
$type = "files";

View File

@@ -272,7 +272,7 @@ class WebDavPropertiesContext implements Context {
'0',
$properties,
null,
$this->featureContext->getDavPathVersion() === 1 ? "public-files" : "public-files-new"
"public-files"
);
}
@@ -727,6 +727,8 @@ class WebDavPropertiesContext implements Context {
*/
public function valueOfItemOfPathShouldBe(string $user, string $xpath, string $path, string $expectedValue):void {
$path = $this->featureContext->substituteInLineCodes($path, $user);
$path = \ltrim($path, '/');
$path = "/" . WebdavHelper::withRemotePhp($path);
$fullXpath = "//d:response/d:href[.='$path']/following-sibling::d:propstat$xpath";
$this->assertValueOfItemInResponseAboutUserIs(
$fullXpath,
@@ -769,8 +771,8 @@ class WebDavPropertiesContext implements Context {
);
// The expected value can contain /%base_path%/ which can be empty some time
// This will result in urls such as //remote.php, so replace that
$expectedValue = preg_replace("/\/\/remote\.php/i", "/remote.php", $expectedValue);
// This will result in urls starting from '//', so replace that with single'/'
$expectedValue = preg_replace("/^\/\//i", "/", $expectedValue);
Assert::assertEquals(
$expectedValue,
$value,
@@ -811,9 +813,9 @@ class WebDavPropertiesContext implements Context {
);
// The expected value can contain /%base_path%/ which can be empty some time
// This will result in urls such as //remote.php, so replace that
$expectedValue1 = preg_replace("/\/\/remote\.php/i", "/remote.php", $expectedValue1);
$expectedValue2 = preg_replace("/\/\/remote\.php/i", "/remote.php", $expectedValue2);
// This will result in urls starting from '//', so replace that with single'/'
$expectedValue1 = preg_replace("/^\/\//i", "/", $expectedValue1);
$expectedValue2 = preg_replace("/^\/\//i", "/", $expectedValue2);
$expectedValues = [$expectedValue1, $expectedValue2];
$isExpectedValueInMessage = \in_array($value, $expectedValues);
Assert::assertTrue($isExpectedValueInMessage, "The actual value \"$value\" is not one of the expected values: \"$expectedValue1\" or \"$expectedValue2\"");
@@ -896,6 +898,7 @@ class WebDavPropertiesContext implements Context {
$user,
['preg_quote' => ['/']]
);
$expectedHref = WebdavHelper::withRemotePhp($expectedHref);
$index = 0;
while (true) {
@@ -909,16 +912,12 @@ class WebDavPropertiesContext implements Context {
);
$value = $xmlPart[0]->__toString();
$decodedValue = \rawurldecode($value);
// for folders, decoded value will be like: "/owncloud/core/remote.php/webdav/strängé folder/"
// expected href should be like: "remote.php/webdav/strängé folder/"
// for files, decoded value will be like: "/owncloud/core/remote.php/webdav/strängé folder/file.txt"
// expected href should be like: "remote.php/webdav/strängé folder/file.txt"
$explodeDecoded = \explode('/', $decodedValue);
// get the first item of the expected href.
// i.e. remote.php from "remote.php/webdav/strängé folder/file.txt"
// or dav from "dav/spaces/%spaceid%/C++ file.cpp"
$explodeExpected = \explode('/', $expectedHref);
$remotePhpIndex = \array_search($explodeExpected[0], $explodeDecoded);
// 'dav' from "dav/spaces/%spaceid%/C++ file.cpp"
$explodeExpected = \explode('/', $expectedHref)[0];
$remotePhpIndex = \array_search($explodeExpected, $explodeDecoded);
if ($remotePhpIndex) {
$explodedHrefPartArray = \array_slice($explodeDecoded, $remotePhpIndex);
$actualHrefPart = \implode('/', $explodedHrefPartArray);
@@ -955,6 +954,14 @@ class WebDavPropertiesContext implements Context {
$user = $this->featureContext->getActualUsername($user);
$value = $xmlPart[0]->__toString();
$callback = ($this->featureContext->isUsingSharingNG()) ? "shareNgGetLastCreatedLinkShareToken" : "getLastCreatedPublicShareToken";
if (\str_ends_with($xpath, "d:href")) {
$pattern = \preg_replace("/^\//", "", $pattern);
$pattern = \preg_replace("/^\^/", "", $pattern);
$pattern = \ltrim($pattern, "\/");
$withRemotePhp = \rtrim(WebdavHelper::withRemotePhp(""), "/");
$pattern = "/^\/{$withRemotePhp}\/{$pattern}";
}
$pattern = $this->featureContext->substituteInLineCodes(
$pattern,
$user,

View File

@@ -14,11 +14,11 @@ default:
ldapInitialUserFilePath: /../config/ldap-users.ldif
contexts:
- FeatureContext: &common_feature_context_params
baseUrl: http://localhost:8080
baseUrl: http://localhost:8080 # TODO: clean me
adminUsername: admin
adminPassword: admin
regularUserPassword: 123456
ocPath: apps/testing/api/v1/occ
ocPath: apps/testing/api/v1/occ # TODO: clean me
- SettingsContext:
- GraphContext:
- SpacesContext:

View File

@@ -168,6 +168,27 @@ _ocdav: api compatibility, return correct status code_
- [coreApiWebdavProperties/copyFile.feature:1068](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L1068)
- [coreApiWebdavProperties/copyFile.feature:1069](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/copyFile.feature#L1069)
#### [same href in REPORT request for all dav-path-version](https://github.com/owncloud/ocis/issues/7060)
- [coreApiWebdavOperations/search.feature:42](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L42)
- [coreApiWebdavOperations/search.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L43)
- [coreApiWebdavOperations/search.feature:60](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L60)
- [coreApiWebdavOperations/search.feature:61](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L61)
- [coreApiWebdavOperations/search.feature:79](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L79)
- [coreApiWebdavOperations/search.feature:80](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L80)
- [coreApiWebdavOperations/search.feature:110](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L110)
- [coreApiWebdavOperations/search.feature:111](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L111)
- [coreApiWebdavOperations/search.feature:130](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L130)
- [coreApiWebdavOperations/search.feature:131](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L131)
- [coreApiWebdavOperations/search.feature:151](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L151)
- [coreApiWebdavOperations/search.feature:152](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L152)
- [coreApiWebdavOperations/search.feature:229](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L229)
- [coreApiWebdavOperations/search.feature:230](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L230)
#### [Trying to restore personal file to share received folder deletes shared file]()
- [coreApiTrashbin/trashbinSharingToShares.feature:271](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiTrashbin/trashbinSharingToShares.feature#L271)
### Won't fix
Not everything needs to be implemented for ocis. While the oc10 testsuite covers these things we are not looking at them right now.

View File

@@ -84,24 +84,24 @@ The expected failures in this file are from features in the owncloud/ocis repo.
#### [Shared file locking is not possible using different path](https://github.com/owncloud/ocis/issues/7599)
- [apiLocks/lockFiles.feature:188](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L188)
- [apiLocks/lockFiles.feature:189](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L189)
- [apiLocks/lockFiles.feature:190](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L190)
- [apiLocks/lockFiles.feature:311](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L311)
- [apiLocks/lockFiles.feature:312](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L312)
- [apiLocks/lockFiles.feature:313](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L313)
- [apiLocks/lockFiles.feature:185](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L185)
- [apiLocks/lockFiles.feature:186](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L186)
- [apiLocks/lockFiles.feature:187](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L187)
- [apiLocks/lockFiles.feature:308](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L308)
- [apiLocks/lockFiles.feature:309](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L309)
- [apiLocks/lockFiles.feature:310](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L310)
- [apiLocks/lockFiles.feature:363](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L363)
- [apiLocks/lockFiles.feature:364](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L364)
- [apiLocks/lockFiles.feature:365](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L365)
- [apiLocks/lockFiles.feature:366](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L366)
- [apiLocks/lockFiles.feature:367](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L367)
- [apiLocks/lockFiles.feature:368](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L368)
- [apiLocks/lockFiles.feature:369](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L369)
- [apiLocks/lockFiles.feature:370](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L370)
- [apiLocks/lockFiles.feature:371](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L371)
- [apiLocks/lockFiles.feature:398](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L398)
- [apiLocks/lockFiles.feature:399](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L399)
- [apiLocks/lockFiles.feature:400](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L400)
- [apiLocks/lockFiles.feature:401](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L401)
- [apiLocks/lockFiles.feature:402](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L402)
- [apiLocks/lockFiles.feature:403](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L403)
- [apiLocks/lockFiles.feature:404](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L404)
- [apiLocks/lockFiles.feature:405](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L405)
- [apiLocks/lockFiles.feature:406](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L406)
- [apiLocks/unlockFiles.feature:62](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L62)
- [apiLocks/unlockFiles.feature:63](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L63)
- [apiLocks/unlockFiles.feature:64](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L64)
@@ -126,18 +126,18 @@ The expected failures in this file are from features in the owncloud/ocis repo.
#### [Folders can be locked and locking works partially](https://github.com/owncloud/ocis/issues/7641)
- [apiLocks/lockFiles.feature:442](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L442)
- [apiLocks/lockFiles.feature:443](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L443)
- [apiLocks/lockFiles.feature:444](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L444)
- [apiLocks/lockFiles.feature:445](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L445)
- [apiLocks/lockFiles.feature:446](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L446)
- [apiLocks/lockFiles.feature:447](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L447)
- [apiLocks/lockFiles.feature:448](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L448)
- [apiLocks/lockFiles.feature:449](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L449)
- [apiLocks/lockFiles.feature:450](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L450)
- [apiLocks/lockFiles.feature:416](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L416)
- [apiLocks/lockFiles.feature:417](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L417)
- [apiLocks/lockFiles.feature:418](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L418)
- [apiLocks/lockFiles.feature:419](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L419)
- [apiLocks/lockFiles.feature:420](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L420)
- [apiLocks/lockFiles.feature:421](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L421)
- [apiLocks/lockFiles.feature:422](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L422)
- [apiLocks/lockFiles.feature:423](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L423)
- [apiLocks/lockFiles.feature:424](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L424)
#### [Anonymous users can unlock a file shared to them through a public link if they get the lock token](https://github.com/owncloud/ocis/issues/7761)
@@ -165,18 +165,14 @@ The expected failures in this file are from features in the owncloud/ocis repo.
#### [Anonymous user trying lock a file shared to them through a public link gives 405](https://github.com/owncloud/ocis/issues/7790)
- [apiLocks/lockFiles.feature:538](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L538)
- [apiLocks/lockFiles.feature:539](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L539)
- [apiLocks/lockFiles.feature:540](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L540)
- [apiLocks/lockFiles.feature:541](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L541)
- [apiLocks/lockFiles.feature:542](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L542)
- [apiLocks/lockFiles.feature:543](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L543)
- [apiLocks/lockFiles.feature:562](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L562)
- [apiLocks/lockFiles.feature:563](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L563)
- [apiLocks/lockFiles.feature:564](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L564)
- [apiLocks/lockFiles.feature:565](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L565)
- [apiLocks/lockFiles.feature:566](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L566)
- [apiLocks/lockFiles.feature:567](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L567)
- [apiLocks/lockFiles.feature:531](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L531)
- [apiLocks/lockFiles.feature:532](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L532)
- [apiLocks/lockFiles.feature:533](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L533)
- [apiLocks/lockFiles.feature:534](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L534)
- [apiLocks/lockFiles.feature:553](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L553)
- [apiLocks/lockFiles.feature:554](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L554)
- [apiLocks/lockFiles.feature:555](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L555)
- [apiLocks/lockFiles.feature:556](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L556)
#### [blocksDownload link type is not implemented yet (sharing-ng)](https://github.com/owncloud/ocis/issues/7879)
@@ -233,39 +229,30 @@ The expected failures in this file are from features in the owncloud/ocis repo.
#### [sharee (editor role) MOVE a file by file-id into shared sub-folder returns 502](https://github.com/owncloud/ocis/issues/7617)
- [apiSpacesDavOperation/moveByFileId.feature:469](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L469)
- [apiSpacesDavOperation/moveByFileId.feature:470](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L470)
- [apiSpacesDavOperation/moveByFileId.feature:732](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L732)
- [apiSpacesDavOperation/moveByFileId.feature:733](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L733)
- [apiSpacesDavOperation/moveByFileId.feature:368](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L368)
- [apiSpacesDavOperation/moveByFileId.feature:591](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L591)
#### [MOVE a file into same folder with same name returns 404 instead of 403](https://github.com/owncloud/ocis/issues/1976)
- [apiSpacesShares/moveSpaces.feature:69](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/moveSpaces.feature#L69)
- [apiSpacesShares/moveSpaces.feature:70](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/moveSpaces.feature#L70)
- [apiSpacesShares/moveSpaces.feature:416](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/moveSpaces.feature#L416)
- [apiSpacesDavOperation/moveByFileId.feature:86](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L86)
- [apiSpacesDavOperation/moveByFileId.feature:87](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L87)
- [apiSpacesDavOperation/moveByFileId.feature:205](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L205)
- [apiSpacesDavOperation/moveByFileId.feature:206](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L206)
- [apiSpacesDavOperation/moveByFileId.feature:207](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L207)
- [apiSpacesDavOperation/moveByFileId.feature:208](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L208)
- [apiSpacesDavOperation/moveByFileId.feature:209](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L209)
- [apiSpacesDavOperation/moveByFileId.feature:210](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L210)
- [apiSpacesDavOperation/moveByFileId.feature:492](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L492)
- [apiSpacesDavOperation/moveByFileId.feature:493](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L493)
- [apiSpacesDavOperation/moveByFileId.feature:61](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L61)
- [apiSpacesDavOperation/moveByFileId.feature:174](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L174)
- [apiSpacesDavOperation/moveByFileId.feature:175](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L175)
- [apiSpacesDavOperation/moveByFileId.feature:176](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L176)
- [apiSpacesDavOperation/moveByFileId.feature:393](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesDavOperation/moveByFileId.feature#L393)
#### [OCM. admin cannot get federated users if he hasn't connection with them ](https://github.com/owncloud/ocis/issues/9829)
- [apiOcm/searchFederationUsers.feature:429](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiOcm/searchFederationUsers.feature#L429)
- [apiOcm/searchFederationUsers.feature:601](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiOcm/searchFederationUsers.feature#L601)
#### [OCM. federated connection is not dropped when one of the users deletes the connection](https://github.com/owncloud/ocis/issues/10216)
- [apiOcm/deleteFederatedConnections.feature:39](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiOcm/deleteFederatedConnections.feature#L39)
- [apiOcm/deleteFederatedConnections.feature:66](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiOcm/deleteFederatedConnections.feature#L66)
#### [OCM. server crash after deleting share for ocm user](https://github.com/owncloud/ocis/issues/10213)
- [apiOcm/deleteFederatedConnections.feature:103](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiOcm/deleteFederatedConnections.feature#L103)
@@ -276,5 +263,66 @@ The expected failures in this file are from features in the owncloud/ocis repo.
- [apiOcm/share.feature:232](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiOcm/share.feature#L232)
- [apiOcm/share.feature:233](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiOcm/share.feature#L233)
#### [same href in REPORT request for all dav-path-version](https://github.com/owncloud/ocis/issues/7060)
- [apiSearch1/dateSearch.feature:17](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L17)
- [apiSearch1/dateSearch.feature:18](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L18)
- [apiSearch1/search.feature:41](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L41)
- [apiSearch1/search.feature:42](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L42)
- [apiSearch1/search.feature:69](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L69)
- [apiSearch1/search.feature:70](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L70)
- [apiSearch1/search.feature:111](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L111)
- [apiSearch1/search.feature:112](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L112)
- [apiSearch1/search.feature:197](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L197)
- [apiSearch1/search.feature:198](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L198)
- [apiSearch1/search.feature:221](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L221)
- [apiSearch1/search.feature:222](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L222)
- [apiSearch1/search.feature:242](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L242)
- [apiSearch1/search.feature:243](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L243)
- [apiSearch1/search.feature:260](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L260)
- [apiSearch1/search.feature:261](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L261)
- [apiSearch1/search.feature:278](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L278)
- [apiSearch1/search.feature:279](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L279)
- [apiSearch1/search.feature:302](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L302)
- [apiSearch1/search.feature:303](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L303)
- [apiSearch1/search.feature:354](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L354)
- [apiSearch1/search.feature:355](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L355)
- [apiSearch2/tagSearch.feature:34](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L34)
- [apiSearch2/tagSearch.feature:35](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L35)
- [apiSearch2/tagSearch.feature:62](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L62)
- [apiSearch2/tagSearch.feature:63](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L63)
- [apiSearch2/tagSearch.feature:87](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L87)
- [apiSearch2/tagSearch.feature:88](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L88)
- [apiSearch2/tagSearch.feature:110](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L110)
- [apiSearch2/tagSearch.feature:111](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L111)
- [apiSearch2/tagSearch.feature:144](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L144)
- [apiSearch2/tagSearch.feature:145](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L145)
- [apiSearch2/tagSearch.feature:182](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L182)
- [apiSearch2/tagSearch.feature:183](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L183)
- [apiSearch2/tagSearch.feature:222](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L222)
- [apiSearch2/tagSearch.feature:223](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L223)
- [apiSearch2/tagSearch.feature:241](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L241)
- [apiSearch2/tagSearch.feature:242](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L242)
- [apiSearchContent/contentSearch.feature:25](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L25)
- [apiSearchContent/contentSearch.feature:26](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L26)
- [apiSearchContent/contentSearch.feature:49](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L49)
- [apiSearchContent/contentSearch.feature:50](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L50)
- [apiSearchContent/contentSearch.feature:82](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L82)
- [apiSearchContent/contentSearch.feature:83](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L83)
- [apiSearchContent/contentSearch.feature:110](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L110)
- [apiSearchContent/contentSearch.feature:111](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L111)
- [apiSearchContent/contentSearch.feature:129](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L129)
- [apiSearchContent/contentSearch.feature:130](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L130)
- [apiSearchContent/contentSearch.feature:146](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L146)
- [apiSearchContent/contentSearch.feature:147](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L147)
- [apiSearchContent/contentSearch.feature:162](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L162)
- [apiSearchContent/contentSearch.feature:163](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L163)
- [apiSearchContent/contentSearch.feature:185](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L185)
- [apiSearchContent/contentSearch.feature:186](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L186)
- [apiSearchContent/contentSearch.feature:214](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L214)
- [apiSearchContent/contentSearch.feature:215](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L215)
- [apiSearchContent/contentSearch.feature:266](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L266)
- [apiSearchContent/contentSearch.feature:267](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L267)
Note: always have an empty line at the end of this file.
The bash script that processes this file requires that the last line has a newline on the end.

View File

@@ -0,0 +1,381 @@
## Scenarios that are expected to fail when remote.php is not used
#### [REPORT request without remote.php returns empty result (only with dav/spaces path)](https://github.com/owncloud/ocis/issues/10329)
- [apiContract/sharesReport.feature:126](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiContract/sharesReport.feature#L126)
- [apiContract/sharesReport.feature:154](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiContract/sharesReport.feature#L154)
- [apiContract/spacesReport.feature:16](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiContract/spacesReport.feature#L16)
- [apiContract/spacesReport.feature:34](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiContract/spacesReport.feature#L34)
- [apiContract/spacesReport.feature:53](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiContract/spacesReport.feature#L53)
- [apiContract/spacesReport.feature:71](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiContract/spacesReport.feature#L71)
- [apiSearch1/dateSearch.feature:19](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L19)
- [apiSearch1/dateSearch.feature:39](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L39)
- [apiSearch1/dateSearch.feature:40](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L40)
- [apiSearch1/dateSearch.feature:41](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L41)
- [apiSearch1/dateSearch.feature:42](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L42)
- [apiSearch1/dateSearch.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L43)
- [apiSearch1/dateSearch.feature:44](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L44)
- [apiSearch1/dateSearch.feature:45](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L45)
- [apiSearch1/dateSearch.feature:46](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L46)
- [apiSearch1/dateSearch.feature:47](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L47)
- [apiSearch1/dateSearch.feature:48](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L48)
- [apiSearch1/dateSearch.feature:50](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L50)
- [apiSearch1/dateSearch.feature:53](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/dateSearch.feature#L53)
- [apiSearch1/search.feature:43](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L43)
- [apiSearch1/search.feature:71](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L71)
- [apiSearch1/search.feature:113](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L113)
- [apiSearch1/search.feature:176](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L176)
- [apiSearch1/search.feature:199](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L199)
- [apiSearch1/search.feature:223](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L223)
- [apiSearch1/search.feature:244](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L244)
- [apiSearch1/search.feature:262](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L262)
- [apiSearch1/search.feature:280](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L280)
- [apiSearch1/search.feature:304](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L304)
- [apiSearch1/search.feature:317](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L317)
- [apiSearch1/search.feature:318](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L318)
- [apiSearch1/search.feature:319](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L319)
- [apiSearch1/search.feature:320](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L320)
- [apiSearch1/search.feature:321](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L321)
- [apiSearch1/search.feature:324](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L324)
- [apiSearch1/search.feature:356](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch1/search.feature#L356)
- [apiSearch2/mediaTypeSearch.feature:31](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L31)
- [apiSearch2/mediaTypeSearch.feature:32](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L32)
- [apiSearch2/mediaTypeSearch.feature:33](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L33)
- [apiSearch2/mediaTypeSearch.feature:34](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L34)
- [apiSearch2/mediaTypeSearch.feature:35](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L35)
- [apiSearch2/mediaTypeSearch.feature:36](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L36)
- [apiSearch2/mediaTypeSearch.feature:37](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L37)
- [apiSearch2/mediaTypeSearch.feature:38](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L38)
- [apiSearch2/mediaTypeSearch.feature:39](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L39)
- [apiSearch2/mediaTypeSearch.feature:60](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L60)
- [apiSearch2/mediaTypeSearch.feature:61](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L61)
- [apiSearch2/mediaTypeSearch.feature:62](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L62)
- [apiSearch2/mediaTypeSearch.feature:63](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L63)
- [apiSearch2/mediaTypeSearch.feature:64](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L64)
- [apiSearch2/mediaTypeSearch.feature:65](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L65)
- [apiSearch2/mediaTypeSearch.feature:66](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L66)
- [apiSearch2/mediaTypeSearch.feature:67](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L67)
- [apiSearch2/mediaTypeSearch.feature:68](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L68)
- [apiSearch2/mediaTypeSearch.feature:90](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L90)
- [apiSearch2/mediaTypeSearch.feature:91](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L91)
- [apiSearch2/mediaTypeSearch.feature:92](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L92)
- [apiSearch2/mediaTypeSearch.feature:93](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L93)
- [apiSearch2/mediaTypeSearch.feature:94](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L94)
- [apiSearch2/mediaTypeSearch.feature:95](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L95)
- [apiSearch2/mediaTypeSearch.feature:96](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L96)
- [apiSearch2/mediaTypeSearch.feature:97](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L97)
- [apiSearch2/mediaTypeSearch.feature:98](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L98)
- [apiSearch2/mediaTypeSearch.feature:126](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L126)
- [apiSearch2/mediaTypeSearch.feature:127](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L127)
- [apiSearch2/mediaTypeSearch.feature:128](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L128)
- [apiSearch2/mediaTypeSearch.feature:129](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L129)
- [apiSearch2/mediaTypeSearch.feature:130](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L130)
- [apiSearch2/mediaTypeSearch.feature:131](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L131)
- [apiSearch2/mediaTypeSearch.feature:132](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L132)
- [apiSearch2/mediaTypeSearch.feature:133](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L133)
- [apiSearch2/mediaTypeSearch.feature:134](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L134)
- [apiSearch2/mediaTypeSearch.feature:161](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L161)
- [apiSearch2/mediaTypeSearch.feature:162](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L162)
- [apiSearch2/mediaTypeSearch.feature:163](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L163)
- [apiSearch2/mediaTypeSearch.feature:164](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L164)
- [apiSearch2/mediaTypeSearch.feature:165](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L165)
- [apiSearch2/mediaTypeSearch.feature:166](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L166)
- [apiSearch2/mediaTypeSearch.feature:167](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L167)
- [apiSearch2/mediaTypeSearch.feature:168](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L168)
- [apiSearch2/mediaTypeSearch.feature:169](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L169)
- [apiSearch2/mediaTypeSearch.feature:172](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/mediaTypeSearch.feature#L172)
- [apiSearch2/tagSearch.feature:36](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L36)
- [apiSearch2/tagSearch.feature:68](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L68)
- [apiSearch2/tagSearch.feature:89](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L89)
- [apiSearch2/tagSearch.feature:116](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L116)
- [apiSearch2/tagSearch.feature:150](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L150)
- [apiSearch2/tagSearch.feature:188](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L188)
- [apiSearch2/tagSearch.feature:224](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L224)
- [apiSearch2/tagSearch.feature:243](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L243)
- [apiSearch2/tagSearch.feature:271](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L271)
- [apiSearch2/tagSearch.feature:272](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L272)
- [apiSearch2/tagSearch.feature:273](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L273)
- [apiSearch2/tagSearch.feature:274](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L274)
- [apiSearch2/tagSearch.feature:275](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L275)
- [apiSearch2/tagSearch.feature:276](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L276)
- [apiSearch2/tagSearch.feature:277](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L277)
- [apiSearch2/tagSearch.feature:278](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L278)
- [apiSearch2/tagSearch.feature:279](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L279)
- [apiSearch2/tagSearch.feature:280](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L280)
- [apiSearch2/tagSearch.feature:282](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearch2/tagSearch.feature#L282)
- [apiSearchContent/contentSearch.feature:27](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L27)
- [apiSearchContent/contentSearch.feature:51](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L51)
- [apiSearchContent/contentSearch.feature:84](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L84)
- [apiSearchContent/contentSearch.feature:112](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L112)
- [apiSearchContent/contentSearch.feature:131](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L131)
- [apiSearchContent/contentSearch.feature:148](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L148)
- [apiSearchContent/contentSearch.feature:164](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L164)
- [apiSearchContent/contentSearch.feature:187](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L187)
- [apiSearchContent/contentSearch.feature:216](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L216)
- [apiSearchContent/contentSearch.feature:234](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L234)
- [apiSearchContent/contentSearch.feature:235](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L235)
- [apiSearchContent/contentSearch.feature:236](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L236)
- [apiSearchContent/contentSearch.feature:237](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L237)
- [apiSearchContent/contentSearch.feature:238](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L238)
- [apiSearchContent/contentSearch.feature:239](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L239)
- [apiSearchContent/contentSearch.feature:268](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSearchContent/contentSearch.feature#L268)
- [cliCommands/searchReIndex.feature:15](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/cliCommands/searchReIndex.feature#L15)
- [coreApiWebdavOperations/search.feature:44](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L44)
- [coreApiWebdavOperations/search.feature:62](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L62)
- [coreApiWebdavOperations/search.feature:81](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L81)
- [coreApiWebdavOperations/search.feature:112](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L112)
- [coreApiWebdavOperations/search.feature:132](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L132)
- [coreApiWebdavOperations/search.feature:153](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L153)
- [coreApiWebdavOperations/search.feature:231](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/search.feature#L231)
#### [Downloading public files without remote.php returns 401 unauthorized error](https://github.com/owncloud/ocis/issues/9724)
- [apiGraph/enforcePasswordPublicLink.feature:79](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L79)
- [apiGraph/enforcePasswordPublicLink.feature:80](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L80)
- [apiGraph/enforcePasswordPublicLink.feature:107](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L107)
- [apiGraph/enforcePasswordPublicLink.feature:108](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L108)
- [apiGraph/enforcePasswordPublicLink.feature:171](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L171)
- [apiGraph/enforcePasswordPublicLink.feature:172](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L172)
- [apiGraph/enforcePasswordPublicLink.feature:229](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L229)
- [apiGraph/enforcePasswordPublicLink.feature:230](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L230)
- [apiGraph/enforcePasswordPublicLink.feature:231](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L231)
- [apiGraph/enforcePasswordPublicLink.feature:232](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L232)
- [apiGraph/enforcePasswordPublicLink.feature:233](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L233)
- [apiGraph/enforcePasswordPublicLink.feature:234](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L234)
- [apiGraph/enforcePasswordPublicLink.feature:235](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L235)
- [apiGraph/enforcePasswordPublicLink.feature:236](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/enforcePasswordPublicLink.feature#L236)
- [apiSpaces/editPublicLinkOfSpace.feature:52](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L52)
- [apiSpaces/editPublicLinkOfSpace.feature:53](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/editPublicLinkOfSpace.feature#L53)
- [apiSpacesShares/publicLinkDownload.feature:16](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/publicLinkDownload.feature#L16)
- [apiSpacesShares/publicLinkDownload.feature:32](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/publicLinkDownload.feature#L32)
- [apiSpacesShares/shareSpacesViaLink.feature:45](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L45)
- [apiSpacesShares/shareSpacesViaLink.feature:46](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L46)
- [apiSpacesShares/shareSpacesViaLink.feature:47](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L47)
- [apiSpacesShares/shareSubItemOfSpaceViaPublicLink.feature:149](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSubItemOfSpaceViaPublicLink.feature#L149)
- [apiSpacesShares/shareSubItemOfSpaceViaPublicLink.feature:150](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSubItemOfSpaceViaPublicLink.feature#L150)
- [apiSharingNgLinkSharePermission/createLinkShare.feature:478](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNgLinkSharePermission/createLinkShare.feature#L478)
- [apiSharingNgLinkSharePermission/createLinkShare.feature:1225](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNgLinkSharePermission/createLinkShare.feature#L1225)
- [apiSharingNgLinkSharePermission/updateLinkShare.feature:209](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNgLinkSharePermission/updateLinkShare.feature#L209)
- [apiSharingNgLinkSharePermission/updateLinkShare.feature:287](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNgLinkSharePermission/updateLinkShare.feature#L287)
- [apiSharingNgLinkShareRoot/updateLinkShare.feature:10](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNgLinkShareRoot/updateLinkShare.feature#L10)
- [apiSharingNgLinkShareRoot/updateLinkShare.feature:42](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNgLinkShareRoot/updateLinkShare.feature#L42)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:219](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L219)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:220](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L220)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:59](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L59)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:60](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L60)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:88](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L88)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:89](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L89)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:122](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L122)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:123](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L123)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:209](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L209)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:210](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L210)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:229](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L229)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:230](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L230)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:257](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L257)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:258](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L258)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:273](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L273)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:274](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L274)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:277](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L277)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:291](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L291)
- [coreApiSharePublicLink2/updatePublicLinkShare.feature:111](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/updatePublicLinkShare.feature#L111)
- [coreApiSharePublicLink2/updatePublicLinkShare.feature:112](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/updatePublicLinkShare.feature#L112)
- [coreApiSharePublicLink2/updatePublicLinkShare.feature:249](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/updatePublicLinkShare.feature#L249)
- [coreApiSharePublicLink2/updatePublicLinkShare.feature:250](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/updatePublicLinkShare.feature#L250)
- [coreApiSharePublicLink2/updatePublicLinkShare.feature:276](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/updatePublicLinkShare.feature#L276)
- [coreApiSharePublicLink2/updatePublicLinkShare.feature:277](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/updatePublicLinkShare.feature#L277)
#### [Most (if not all) requests to public link share without remote.php returns 401 Unauthorized error](https://github.com/owncloud/ocis/issues/10331)
- [apiSpaces/publicLink.feature:18](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L18)
- [apiSpaces/publicLink.feature:23](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L23)
- [apiSpaces/publicLink.feature:28](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L28)
- [apiSpaces/publicLink.feature:34](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L34)
- [apiSpaces/publicLink.feature:40](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/publicLink.feature#L40)
- [apiSpacesShares/shareSpacesViaLink.feature:61](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/shareSpacesViaLink.feature#L61)
- [apiDepthInfinity/propfind.feature:74](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiDepthInfinity/propfind.feature#L74)
- [apiDepthInfinity/propfind.feature:125](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiDepthInfinity/propfind.feature#L125)
- [apiLocks/lockFiles.feature:486](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L486)
- [apiLocks/lockFiles.feature:487](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L487)
- [apiLocks/lockFiles.feature:488](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L488)
- [apiLocks/lockFiles.feature:489](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L489)
- [apiLocks/lockFiles.feature:509](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L509)
- [apiLocks/lockFiles.feature:510](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L510)
- [apiLocks/lockFiles.feature:511](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L511)
- [apiLocks/lockFiles.feature:512](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/lockFiles.feature#L512)
- [apiLocks/unlockFiles.feature:320](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L320)
- [apiLocks/unlockFiles.feature:321](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L321)
- [apiLocks/unlockFiles.feature:322](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L322)
- [apiLocks/unlockFiles.feature:323](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiLocks/unlockFiles.feature#L323)
- [apiActivities/shareActivities.feature:1775](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiActivities/shareActivities.feature#L1775)
- [apiActivities/shareActivities.feature:1914](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiActivities/shareActivities.feature#L1914)
- [apiAntivirus/antivirus.feature:113](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L113)
- [apiAntivirus/antivirus.feature:114](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L114)
- [apiAntivirus/antivirus.feature:115](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L115)
- [apiAntivirus/antivirus.feature:116](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L116)
- [apiAntivirus/antivirus.feature:117](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L117)
- [apiAntivirus/antivirus.feature:118](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L118)
- [apiAntivirus/antivirus.feature:139](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L139)
- [apiAntivirus/antivirus.feature:140](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L140)
- [apiAntivirus/antivirus.feature:141](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L141)
- [apiAntivirus/antivirus.feature:142](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L142)
- [apiAntivirus/antivirus.feature:143](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L143)
- [apiAntivirus/antivirus.feature:144](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L144)
- [apiAntivirus/antivirus.feature:401](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L401)
- [apiAntivirus/antivirus.feature:402](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L402)
- [apiAntivirus/antivirus.feature:403](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiAntivirus/antivirus.feature#L403)
- [apiCollaboration/wopi.feature:956](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L956)
- [apiCollaboration/wopi.feature:957](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L957)
- [apiCollaboration/wopi.feature:958](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L958)
- [apiCollaboration/wopi.feature:961](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L961)
- [apiCollaboration/wopi.feature:1047](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L1047)
- [apiCollaboration/wopi.feature:1048](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L1048)
- [apiCollaboration/wopi.feature:1049](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L1049)
- [apiCollaboration/wopi.feature:1052](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCollaboration/wopi.feature#L1052)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:27](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L27)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:28](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L28)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:29](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L29)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:30](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L30)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:33](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L33)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:46](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L46)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:70](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L70)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:95](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L95)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:120](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L120)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:132](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L132)
- [coreApiSharePublicLink1/changingPublicLinkShare.feature:145](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/changingPublicLinkShare.feature#L145)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:304](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L304)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:328](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L328)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:329](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L329)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:344](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L344)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:345](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L345)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:348](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L348)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:363](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L363)
- [coreApiSharePublicLink1/createPublicLinkShare.feature:377](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/createPublicLinkShare.feature#L377)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:13](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L13)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:28](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L28)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:44](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L44)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:60](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L60)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:75](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L75)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:92](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L92)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:105](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L105)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:137](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L137)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:138](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L138)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:139](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L139)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:140](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L140)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:158](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L158)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:159](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L159)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:160](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L160)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:161](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L161)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:180](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L180)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:181](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L181)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:182](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L182)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:183](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L183)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:186](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L186)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:212](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L212)
- [coreApiSharePublicLink2/copyFromPublicLink.feature:225](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/copyFromPublicLink.feature#L225)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:28](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L28)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:29](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L29)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:30](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L30)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:33](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L33)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:44](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L44)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:58](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L58)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:70](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L70)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:82](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L82)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:94](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L94)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:106](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L106)
- [coreApiSharePublicLink2/uploadToPublicLinkShare.feature:118](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink2/uploadToPublicLinkShare.feature#L118)
- [coreApiWebdavEtagPropagation1/deleteFileFolder.feature:238](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/deleteFileFolder.feature#L238)
- [coreApiWebdavEtagPropagation1/deleteFileFolder.feature:239](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/deleteFileFolder.feature#L239)
- [coreApiWebdavEtagPropagation1/deleteFileFolder.feature:240](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/deleteFileFolder.feature#L240)
- [coreApiWebdavEtagPropagation1/deleteFileFolder.feature:262](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/deleteFileFolder.feature#L262)
- [coreApiWebdavEtagPropagation1/deleteFileFolder.feature:263](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/deleteFileFolder.feature#L263)
- [coreApiWebdavEtagPropagation1/deleteFileFolder.feature:264](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/deleteFileFolder.feature#L264)
- [coreApiWebdavEtagPropagation1/moveFileFolder.feature:308](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/moveFileFolder.feature#L308)
- [coreApiWebdavEtagPropagation1/moveFileFolder.feature:309](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/moveFileFolder.feature#L309)
- [coreApiWebdavEtagPropagation1/moveFileFolder.feature:310](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/moveFileFolder.feature#L310)
- [coreApiWebdavEtagPropagation1/moveFileFolder.feature:333](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/moveFileFolder.feature#L333)
- [coreApiWebdavEtagPropagation1/moveFileFolder.feature:334](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/moveFileFolder.feature#L334)
- [coreApiWebdavEtagPropagation1/moveFileFolder.feature:335](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation1/moveFileFolder.feature#L335)
- [coreApiWebdavEtagPropagation2/copyFileFolder.feature:135](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/copyFileFolder.feature#L135)
- [coreApiWebdavEtagPropagation2/copyFileFolder.feature:136](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/copyFileFolder.feature#L136)
- [coreApiWebdavEtagPropagation2/copyFileFolder.feature:137](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/copyFileFolder.feature#L137)
- [coreApiWebdavEtagPropagation2/createFolder.feature:130](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/createFolder.feature#L130)
- [coreApiWebdavEtagPropagation2/createFolder.feature:131](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/createFolder.feature#L131)
- [coreApiWebdavEtagPropagation2/upload.feature:188](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/upload.feature#L188)
- [coreApiWebdavEtagPropagation2/upload.feature:189](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/upload.feature#L189)
- [coreApiWebdavEtagPropagation2/upload.feature:190](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavEtagPropagation2/upload.feature#L190)
- [coreApiWebdavOperations/listFiles.feature:112](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/listFiles.feature#L112)
- [coreApiWebdavOperations/listFiles.feature:140](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/listFiles.feature#L140)
- [coreApiWebdavOperations/propfind.feature:40](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/propfind.feature#L40)
- [coreApiWebdavOperations/propfind.feature:55](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/propfind.feature#L55)
- [coreApiWebdavOperations/propfind.feature:69](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/propfind.feature#L69)
- [coreApiWebdavUpload/uploadFile.feature:376](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUpload/uploadFile.feature#L376)
#### [Cannot create new TUS upload resource using /webdav without remote.php - returns html instead](https://github.com/owncloud/ocis/issues/10346)
- [apiSpaces/tusUpload.feature:60](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/tusUpload.feature#L60)
- [apiSpaces/tusUpload.feature:104](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpaces/tusUpload.feature#L104)
- [coreApiWebdavUploadTUS/creationWithUploadExtension.feature:38](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/creationWithUploadExtension.feature#L38)
- [coreApiWebdavUploadTUS/uploadFile.feature:16](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L16)
- [coreApiWebdavUploadTUS/uploadFile.feature:17](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L17)
- [coreApiWebdavUploadTUS/uploadFile.feature:18](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L18)
- [coreApiWebdavUploadTUS/uploadFile.feature:19](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L19)
- [coreApiWebdavUploadTUS/uploadFile.feature:20](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L20)
- [coreApiWebdavUploadTUS/uploadFile.feature:21](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L21)
- [coreApiWebdavUploadTUS/uploadFile.feature:22](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L22)
- [coreApiWebdavUploadTUS/uploadFile.feature:46](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L46)
- [coreApiWebdavUploadTUS/uploadFile.feature:47](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L47)
- [coreApiWebdavUploadTUS/uploadFile.feature:48](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L48)
- [coreApiWebdavUploadTUS/uploadFile.feature:49](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L49)
- [coreApiWebdavUploadTUS/uploadFile.feature:50](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L50)
- [coreApiWebdavUploadTUS/uploadFile.feature:51](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L51)
- [coreApiWebdavUploadTUS/uploadFile.feature:52](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L52)
- [coreApiWebdavUploadTUS/uploadFile.feature:75](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L75)
- [coreApiWebdavUploadTUS/uploadFile.feature:86](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L86)
- [coreApiWebdavUploadTUS/uploadFile.feature:98](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L98)
- [coreApiWebdavUploadTUS/uploadFile.feature:109](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L109)
- [coreApiWebdavUploadTUS/uploadFile.feature:122](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L122)
- [coreApiWebdavUploadTUS/uploadFile.feature:133](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L133)
- [coreApiWebdavUploadTUS/uploadFile.feature:145](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L145)
- [coreApiWebdavUploadTUS/uploadFile.feature:167](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L167)
- [coreApiWebdavUploadTUS/uploadFile.feature:186](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L186)
- [coreApiWebdavUploadTUS/uploadFile.feature:198](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L198)
- [coreApiWebdavUploadTUS/uploadFile.feature:211](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFile.feature#L211)
- [coreApiWebdavUploadTUS/uploadFileMtime.feature:16](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtime.feature#L16)
- [coreApiWebdavUploadTUS/uploadFileMtime.feature:27](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtime.feature#L27)
- [coreApiWebdavUploadTUS/uploadFileMtime.feature:39](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtime.feature#L39)
- [coreApiWebdavUploadTUS/uploadFileMtime.feature:51](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtime.feature#L51)
- [coreApiWebdavUploadTUS/uploadFileMtimeShares.feature:29](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtimeShares.feature#L29)
- [coreApiWebdavUploadTUS/uploadFileMtimeShares.feature:48](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtimeShares.feature#L48)
- [coreApiWebdavUploadTUS/uploadFileMtimeShares.feature:68](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtimeShares.feature#L68)
- [coreApiWebdavUploadTUS/uploadFileMtimeShares.feature:88](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadFileMtimeShares.feature#L88)
- [coreApiWebdavUploadTUS/uploadToMoveFolder.feature:20](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadToMoveFolder.feature#L20)
- [coreApiWebdavUploadTUS/uploadToShare.feature:29](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadToShare.feature#L29)
- [coreApiWebdavUploadTUS/uploadToShare.feature:48](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadToShare.feature#L48)
- [coreApiWebdavUploadTUS/uploadToShare.feature:69](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadToShare.feature#L69)
- [coreApiWebdavUploadTUS/uploadToShare.feature:89](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUploadTUS/uploadToShare.feature#L89)
#### [PROPFIND to /webdav root (old dav path) without remote.php returns html instead of xml](https://github.com/owncloud/ocis/issues/10334)
- [coreApiAuth/webDavAuth.feature:15](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiAuth/webDavAuth.feature#L15)
- [coreApiAuth/webDavAuth.feature:25](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiAuth/webDavAuth.feature#L25)
- [coreApiShareManagementToShares/moveReceivedShare.feature:49](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiShareManagementToShares/moveReceivedShare.feature#L49)
- [coreApiShareManagementToShares/moveReceivedShare.feature:128](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiShareManagementToShares/moveReceivedShare.feature#L128)
- [coreApiShareManagementToShares/moveReceivedShare.feature:129](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiShareManagementToShares/moveReceivedShare.feature#L129)
- [coreApiWebdavOperations/propfind.feature:25](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/propfind.feature#L25)
- [coreApiWebdavOperations/propfind.feature:26](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/propfind.feature#L26)
- [coreApiWebdavOperations/propfind.feature:36](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavOperations/propfind.feature#L36)
#### [Public cannot download file preview of unprotected (without password) link share without remote.php](https://github.com/owncloud/ocis/issues/10341)
- [coreApiSharePublicLink1/accessToPublicLinkShare.feature:25](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/accessToPublicLinkShare.feature#L25)
- [coreApiSharePublicLink1/accessToPublicLinkShare.feature:54](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiSharePublicLink1/accessToPublicLinkShare.feature#L54)
#### [Trying to create .. resource with /webdav root (old dav path) without remote.php returns html](https://github.com/owncloud/ocis/issues/10339)
- [coreApiWebdavProperties/createFileFolder.feature:176](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/createFileFolder.feature#L176)
- [coreApiWebdavProperties/createFileFolder.feature:177](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/createFileFolder.feature#L177)
- [coreApiWebdavProperties/createFileFolder.feature:196](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/createFileFolder.feature#L196)
- [coreApiWebdavProperties/createFileFolder.feature:197](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavProperties/createFileFolder.feature#L197)
Note: always have an empty line at the end of this file.
The bash script that processes this file requires that the last line has a newline on the end.

View File

@@ -15,20 +15,20 @@ Feature: attempt to PUT files with invalid password
Scenario: send PUT requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send PUT requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"

View File

@@ -1771,7 +1771,7 @@ Feature: check share activity
When user "Brian" tries to list the activities of file "anotherTextfile.txt" from space "Personal" owned by user "Alice" using the Graph API
Then the HTTP status code should be "403"
@issue-9676
@issue-9676 @issue-10331
Scenario: user checks public activities of a link shared file
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -1910,7 +1910,7 @@ Feature: check share activity
}
"""
@issue-9676
@issue-9676 @issue-10331
Scenario: user checks public activities of a link shared folder
Given using SharingNG
And user "Alice" has created folder "/FOLDER"

View File

@@ -91,7 +91,7 @@ Feature: antivirus
| old |
| spaces |
@issue-10331
Scenario Outline: public uploads a file with the virus to a public share
Given using <dav-path-version> DAV path
And the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
@@ -117,7 +117,7 @@ Feature: antivirus
| spaces | eicar.com | virusFile1.txt |
| spaces | eicar_com.zip | virusFile2.zip |
@issue-10331
Scenario Outline: public uploads a file with the virus to a password-protected public share
Given using <dav-path-version> DAV path
And using SharingNG
@@ -380,7 +380,7 @@ Feature: antivirus
| new |
| spaces |
@env-config
@env-config @issue-10331
Scenario Outline: try to overwrite a file with the virus content in a public link share
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using <dav-path-version> DAV path

View File

@@ -14,10 +14,10 @@ Feature: delay post-processing of uploaded files
When user "Alice" requests "<dav-path>" with "GET" without retrying
Then the HTTP status code should be "425"
Examples:
| dav-path |
| /remote.php/webdav/file.txt |
| /remote.php/dav/files/%username%/file.txt |
| /dav/spaces/%spaceid%/file.txt |
| dav-path |
| /webdav/file.txt |
| /dav/files/%username%/file.txt |
| /dav/spaces/%spaceid%/file.txt |
Scenario Outline: user sends PROPFIND request to the file while it's still being processed
@@ -26,10 +26,10 @@ Feature: delay post-processing of uploaded files
Then the HTTP status code should be "207"
And the value of the item "//d:response/d:propstat/d:status" in the response should be "HTTP/1.1 425 TOO EARLY"
Examples:
| dav-path |
| /remote.php/webdav/file.txt |
| /remote.php/dav/files/%username%/file.txt |
| /dav/spaces/%spaceid%/file.txt |
| dav-path |
| /webdav/file.txt |
| /dav/files/%username%/file.txt |
| /dav/spaces/%spaceid%/file.txt |
Scenario Outline: user sends PROPFIND request to the folder while files in the folder are still being processed
@@ -40,7 +40,7 @@ Feature: delay post-processing of uploaded files
And as user "Alice" the value of the item "//d:status" of path "<dav-path>/" in the response should be "HTTP/1.1 200 OK"
And as user "Alice" the value of the item "//d:status" of path "<dav-path>/file.txt" in the response should be "HTTP/1.1 425 TOO EARLY"
Examples:
| dav-path |
| /remote.php/webdav/my_data |
| /remote.php/dav/files/%username%/my_data |
| /dav/spaces/%spaceid%/my_data |
| dav-path |
| /webdav/my_data |
| /dav/files/%username%/my_data |
| /dav/spaces/%spaceid%/my_data |

View File

@@ -925,7 +925,7 @@ Feature: collaboration (wopi)
And as "Alice" file "testFolder/simple.odt" should not exist
And as "Brian" file "Shares/testFolder/simple.odt" should not exist
@issue-10331
Scenario Outline: public user with permission edit/upload/createOnly creates odt file inside public folder using wopi endpoint
Given user "Alice" has created folder "publicFolder"
And user "Alice" has created the following resource link share:
@@ -957,7 +957,7 @@ Feature: collaboration (wopi)
| upload |
| createOnly |
@issue-10126
@issue-10126 @issue-10331
Scenario: public user with permission view tries to creates odt file inside public folder using wopi endpoint
Given user "Alice" has created folder "publicFolder"
And user "Alice" has created the following resource link share:
@@ -1013,7 +1013,7 @@ Feature: collaboration (wopi)
}
"""
@issue-8691
@issue-8691 @issue-10331
Scenario Outline: public user with permission edit/upload/createOnly creates odt file inside folder of public space using wopi endpoint
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
@@ -1048,7 +1048,7 @@ Feature: collaboration (wopi)
| upload |
| createOnly |
@issue-8691 @issue-10126
@issue-8691 @issue-10126 @issue-10331
Scenario: public user with permission view tries to create odt file inside folder of public space using wopi endpoint
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API

View File

@@ -84,7 +84,7 @@ Feature: REPORT request to Shares space
| old |
| new |
@issue-9607
@issue-9607 @issue-10329
Scenario Outline: check the REPORT response of a folder shared with secure viewer role
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/secureFolder"
@@ -125,7 +125,7 @@ Feature: REPORT request to Shares space
| new |
| spaces |
@issue-9607
@issue-9607 @issue-10329
Scenario Outline: check the REPORT response of a file shared with secure viewer role
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "secure content" to "/secure.txt"

View File

@@ -12,10 +12,9 @@ Feature: REPORT request to project space
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "findData" with the default quota using the Graph API
@issue-10329
Scenario: check the response of the searched file
Given user "Alice" has uploaded a file inside space "findData" with content "some content" to "testFile.txt"
And using new DAV path
When user "Alice" searches for "testFile.txt" using the WebDAV API
Then the HTTP status code should be "207"
And the search result of user "Alice" should contain only these entries:
@@ -31,11 +30,10 @@ Feature: REPORT request to project space
| oc:permissions | RDNVW |
| d:getcontentlength | 12 |
@issue-10329
Scenario: check the response of the searched sub-file
Given user "Alice" has created a folder "folderMain/SubFolder1/subFOLDER2" in space "findData"
And user "Alice" has uploaded a file inside space "findData" with content "some content" to "folderMain/SubFolder1/subFOLDER2/insideTheFolder.txt"
And using new DAV path
When user "Alice" searches for "insideTheFolder.txt" using the WebDAV API
Then the HTTP status code should be "207"
And the search result of user "Alice" should contain only these entries:
@@ -51,10 +49,9 @@ Feature: REPORT request to project space
| oc:permissions | RDNVW |
| d:getcontentlength | 12 |
@issue-10329
Scenario: check the response of the searched folder
Given user "Alice" has created a folder "folderMain" in space "findData"
And using new DAV path
When user "Alice" searches for "folderMain" using the WebDAV API
Then the HTTP status code should be "207"
And the search result of user "Alice" should contain only these entries:
@@ -70,10 +67,9 @@ Feature: REPORT request to project space
| oc:permissions | RDNVCK |
| oc:size | 0 |
@issue-10329
Scenario: check the response of the searched sub-folder
Given user "Alice" has created a folder "folderMain/sub-folder" in space "findData"
And using new DAV path
When user "Alice" searches for "*sub*" using the WebDAV API
Then the HTTP status code should be "207"
And the search result of user "Alice" should contain only these entries:

View File

@@ -70,7 +70,7 @@ Feature: PROPFIND with depth:infinity
| new |
| spaces |
@issue-10331
Scenario: get the list of resources in a folder shared through public link with depth infinity
Given using new DAV path
And using SharingNG
@@ -121,7 +121,7 @@ Feature: PROPFIND with depth:infinity
| new |
| spaces |
@issue-10331
Scenario: get the list of resources in a folder shared through public link with depth infinity when depth infinity is not allowed
Given the following configs have been set:
| config | value |

View File

@@ -51,7 +51,7 @@ Feature: enforce password on public link
| 1 | 100 |
| 2 | 200 |
@issue-9724 @issue-10331
Scenario Outline: updates a public link to edit permission with a password
Given the following configs have been set:
| config | value |
@@ -71,15 +71,15 @@ Feature: enforce password on public link
Then the HTTP status code should be "200"
And the OCS status code should be "<ocs-status-code>"
And the OCS status message should be "OK"
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "%public%"
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "%public%"
Examples:
| ocs-api-version | ocs-status-code |
| 1 | 100 |
| 2 | 200 |
@issue-9724 @issue-10331
Scenario Outline: create a public link with a password in accordance with the password policy
Given the following configs have been set:
| config | value |
@@ -99,9 +99,9 @@ Feature: enforce password on public link
Then the HTTP status code should be "200"
And the OCS status code should be "<ocs-status-code>"
And the OCS status message should be "OK"
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "3s:5WW9uE5h=A"
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "3s:5WW9uE5h=A"
Examples:
| ocs-api-version | ocs-status-code |
| 1 | 100 |
@@ -138,7 +138,7 @@ Feature: enforce password on public link
| 1 | 200 |
| 2 | 400 |
@issue-9724 @issue-10331
Scenario Outline: update a public link with a password in accordance with the password policy
Given the following configs have been set:
| config | value |
@@ -163,9 +163,9 @@ Feature: enforce password on public link
Then the HTTP status code should be "200"
And the OCS status code should be "<ocs-status-code>"
And the OCS status message should be "OK"
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "6a0Q;A3 +i^m["
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "6a0Q;A3 +i^m["
Examples:
| ocs-api-version | ocs-status-code |
| 1 | 100 |
@@ -208,7 +208,7 @@ Feature: enforce password on public link
| 1 | 200 |
| 2 | 400 |
@issue-9724 @issue-10331
Scenario Outline: create a public link with a password in accordance with the password policy (valid cases)
Given the config "<config>" has been set to "<config-value>"
And using OCS API version "2"
@@ -221,9 +221,9 @@ Feature: enforce password on public link
Then the HTTP status code should be "200"
And the OCS status code should be "200"
And the OCS status message should be "OK"
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/textfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "<password>"
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API without a password
And the public should not be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "wrong pass"
But the public should be able to download file "/testfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "<password>"
Examples:
| config | config-value | password |
| OCIS_PASSWORD_POLICY_MIN_CHARACTERS | 4 | Ps-1 |

View File

@@ -52,10 +52,11 @@ Feature: lock files
| spaces |
Scenario Outline: lock a file using file-id
Given user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
Scenario: lock a file using file-id
Given using spaces DAV path
And user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" locks file "textfile.txt" using file-id path "<dav-path>" using the WebDAV API setting the following properties
When user "Alice" locks file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
Then the HTTP status code should be "200"
@@ -67,10 +68,6 @@ Feature: lock files
| d:lockdiscovery/d:activelock/d:depth | Infinity |
| d:lockdiscovery/d:activelock/d:timeout | Second-3600 |
| d:lockdiscovery/d:activelock/oc:ownername | Alice Hansen |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: user cannot lock file twice
@@ -127,7 +124,7 @@ Feature: lock files
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" locks file "textfile.txt" using file-id path "<dav-path>" using the WebDAV API setting the following properties
When user "Brian" locks file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
Then the HTTP status code should be "200"
@@ -140,9 +137,9 @@ Feature: lock files
| d:lockdiscovery/d:activelock/d:timeout | Second-3600 |
| d:lockdiscovery/d:activelock/oc:ownername | Brian Murphy |
Examples:
| space-role | dav-path |
| Manager | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | /dav/spaces/<<FILEID>> |
| space-role |
| Manager |
| Space Editor |
Scenario: viewer cannot lock a file in the project space
@@ -156,7 +153,7 @@ Feature: lock files
| sharee | Brian |
| shareType | user |
| permissionsRole | Space Viewer |
When user "Brian" tries to lock file "textfile.txt" using file-id path "/dav/spaces/<<FILEID>>" using the WebDAV API setting the following properties
When user "Brian" tries to lock file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API setting the following properties
| lockscope | exclusive |
Then the HTTP status code should be "403"
When user "Brian" tries to lock file "textfile.txt" inside the space "Project" using the WebDAV API setting the following properties
@@ -190,8 +187,9 @@ Feature: lock files
| spaces |
Scenario Outline: lock a file in the shares using file-id
Given user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
Scenario: lock a file in the shares using file-id
Given using spaces DAV path
And user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
And we save it into "FILEID"
And user "Alice" has sent the following resource share invitation:
| resource | textfile.txt |
@@ -200,7 +198,7 @@ Feature: lock files
| shareType | user |
| permissionsRole | File Editor |
And user "Brian" has a share "textfile.txt" synced
When user "Brian" locks file "textfile.txt" using file-id path "<dav-path>" using the WebDAV API setting the following properties
When user "Brian" locks file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
Then the HTTP status code should be "200"
@@ -210,14 +208,11 @@ Feature: lock files
| key | value |
| d:lockdiscovery/d:activelock/d:lockscope/d:exclusive | |
| d:lockdiscovery/d:activelock/oc:ownername | Brian Murphy |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: viewer cannot lock a file in the shares using file-id
Given user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
Given using spaces DAV path
And user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
And we save it into "FILEID"
And user "Alice" has sent the following resource share invitation:
| resource | textfile.txt |
@@ -226,7 +221,7 @@ Feature: lock files
| shareType | user |
| permissionsRole | <permissions-role> |
And user "Brian" has a share "textfile.txt" synced
When user "Brian" tries to lock file "textfile.txt" using file-id path "/dav/spaces/<<FILEID>>" using the WebDAV API setting the following properties
When user "Brian" tries to lock file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API setting the following properties
| lockscope | exclusive |
Then the HTTP status code should be "403"
Examples:
@@ -236,7 +231,8 @@ Feature: lock files
Scenario: sharee cannot lock a resource exclusively locked by a sharer
Given user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
Given using spaces DAV path
And user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
And we save it into "FILEID"
And user "Alice" has sent the following resource share invitation:
| resource | textfile.txt |
@@ -247,7 +243,7 @@ Feature: lock files
And user "Brian" has a share "textfile.txt" synced
And user "Alice" has locked file "textfile.txt" setting the following properties
| lockscope | exclusive |
When user "Brian" tries to lock file "textfile.txt" using file-id path "/dav/spaces/<<FILEID>>" using the WebDAV API setting the following properties
When user "Brian" tries to lock file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
Then the HTTP status code should be "423"
@@ -260,7 +256,8 @@ Feature: lock files
Scenario: sharer cannot lock a resource exclusively locked by a sharee
Given user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
Given using spaces DAV path
And user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
And we save it into "FILEID"
And user "Alice" has sent the following resource share invitation:
| resource | textfile.txt |
@@ -269,9 +266,9 @@ Feature: lock files
| shareType | user |
| permissionsRole | File Editor |
And user "Brian" has a share "textfile.txt" synced
And user "Brian" has locked file "textfile.txt" using file-id path "/dav/spaces/<<FILEID>>" setting the following properties
And user "Brian" has locked file "textfile.txt" using file-id "<<FILEID>>" setting the following properties
| lockscope | exclusive |
When user "Alice" tries to lock file "textfile.txt" using file-id path "/dav/spaces/<<FILEID>>" using the WebDAV API setting the following properties
When user "Alice" tries to lock file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
Then the HTTP status code should be "423"
@@ -293,7 +290,7 @@ Feature: lock files
| sharee | Brian |
| shareType | user |
| permissionsRole | File Editor |
And user "Brian" has a share "textfile.txt" synced
And user "Brian" has a share "textfile0.txt" synced
And user "Alice" has locked file "textfile0.txt" setting the following properties
| lockscope | shared |
And user "Brian" has locked file "Shares/textfile0.txt" setting the following properties
@@ -423,7 +420,7 @@ Feature: lock files
| spaces | shared |
| spaces | exclusive |
@issue-7641
@issue-7641 @issue-10331
Scenario Outline: try to lock a folder as anonymous user
Given using <dav-path-version> DAV path
And using SharingNG
@@ -468,7 +465,7 @@ Feature: lock files
| spaces | shared |
| spaces | exclusive |
@issue-10331
Scenario Outline: lock a file inside a folder shared by a link as anonymous user with edit permission
Given using <dav-path-version> DAV path
And using SharingNG
@@ -486,14 +483,12 @@ Feature: lock files
And user "Alice" should not be able to upload file "filesForUpload/lorem.txt" to "PARENT/textfile0.txt"
Examples:
| dav-path-version | lock-scope |
| old | shared |
| old | exclusive |
| new | shared |
| new | exclusive |
| spaces | shared |
| spaces | exclusive |
@issue-10331
Scenario Outline: try to lock a file inside a folder shared by a link as anonymous user with read permission
Given using <dav-path-version> DAV path
And using SharingNG
@@ -511,14 +506,12 @@ Feature: lock files
And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "PARENT/textfile0.txt"
Examples:
| dav-path-version | lock-scope |
| old | shared |
| old | exclusive |
| new | shared |
| new | exclusive |
| spaces | shared |
| spaces | exclusive |
@issue-7790
@issue-7790 @issue-10331
Scenario Outline: lock a file shared by a link as anonymous user with edit permission
Given using <dav-path-version> DAV path
And using SharingNG
@@ -535,14 +528,12 @@ Feature: lock files
And user "Alice" should not be able to upload file "filesForUpload/lorem.txt" to "textfile0.txt"
Examples:
| dav-path-version | lock-scope |
| old | shared |
| old | exclusive |
| new | shared |
| new | exclusive |
| spaces | shared |
| spaces | exclusive |
@issue-7790
@issue-7790 @issue-10331
Scenario Outline: try to lock a file shared by a link as anonymous user with read permission
Given using <dav-path-version> DAV path
And using SharingNG
@@ -559,8 +550,6 @@ Feature: lock files
And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "textfile0.txt"
Examples:
| dav-path-version | lock-scope |
| old | shared |
| old | exclusive |
| new | shared |
| new | exclusive |
| spaces | shared |

View File

@@ -21,7 +21,7 @@ Feature: unlock locked items
| new |
| spaces |
@issue-7761
@issue-7761 @issue-10331
Scenario Outline: public tries to unlock a file in a share that was locked by the file owner
Given using <dav-path-version> DAV path
And using SharingNG
@@ -247,24 +247,20 @@ Feature: unlock locked items
| exclusive |
Scenario Outline: unlock a file using file-id
Scenario: unlock a file using file-id
Given using spaces DAV path
And user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
And we save it into "FILEID"
And user "Alice" has locked file "textfile.txt" using file-id path "<dav-path>" setting the following properties
And user "Alice" has locked file "textfile.txt" using file-id "<<FILEID>>" setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
When user "Alice" unlocks the last created lock of file "textfile.txt" using file-id path "<dav-path>" using the WebDAV API
When user "Alice" unlocks the last created lock of file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API
Then the HTTP status code should be "204"
And 0 locks should be reported for file "textfile.txt" of user "Alice" by the WebDAV API
And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "textfile.txt"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: unlock a file in project space using file-id
Scenario: unlock a file in project space using file-id
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "Project" with the default quota using the Graph API
@@ -273,17 +269,13 @@ Feature: unlock locked items
And user "Alice" has locked file "textfile.txt" inside the space "Project" setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
When user "Alice" unlocks the last created lock of file "textfile.txt" using file-id path "<dav-path>" using the WebDAV API
When user "Alice" unlocks the last created lock of file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API
Then the HTTP status code should be "204"
And 0 locks should be reported for file "textfile.txt" inside the space "Project" of user "Alice"
And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "textfile.txt"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: unlock a file in the shares using file-id
Scenario: unlock a file in the shares using file-id
Given user "Brian" has been created with default attributes and without skeleton files
And using spaces DAV path
And user "Alice" has uploaded a file inside space "Alice Hansen" with content "some content" to "textfile.txt"
@@ -295,22 +287,18 @@ Feature: unlock locked items
| shareType | user |
| permissionsRole | File Editor |
And user "Brian" has a share "textfile.txt" synced
And user "Brian" has locked file "textfile.txt" using file-id path "<dav-path>" setting the following properties
And user "Brian" has locked file "textfile.txt" using file-id "<<FILEID>>" setting the following properties
| lockscope | exclusive |
| timeout | Second-3600 |
When user "Brian" unlocks the last created lock of file "textfile.txt" using file-id path "<dav-path>" using the WebDAV API
When user "Brian" unlocks the last created lock of file "textfile.txt" using file-id "<<FILEID>>" using the WebDAV API
Then the HTTP status code should be "204"
And 0 locks should be reported for file "textfile.txt" inside the space "Personal" of user "Alice"
And 0 locks should be reported for file "textfile.txt" inside the space "Shares" of user "Brian"
And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "textfile.txt"
And using new DAV path
And user "Brian" should be able to upload file "filesForUpload/lorem.txt" to "Shares/textfile.txt"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
@issue-10331
Scenario Outline: unlock a file as an anonymous user
Given using <dav-path-version> DAV path
And using SharingNG
@@ -329,8 +317,6 @@ Feature: unlock locked items
And user "Alice" should be able to upload file "filesForUpload/lorem.txt" to "PARENT/textfile0.txt"
Examples:
| dav-path-version | lock-scope |
| old | shared |
| old | exclusive |
| new | shared |
| new | exclusive |
| spaces | shared |

View File

@@ -5,7 +5,7 @@ Feature: date search
Background:
Given user "Alice" has been created with default attributes and without skeleton files
@issue-7060 @issue-10329
Scenario Outline: search resources using different dav path
Given using <dav-path-version> DAV path
And user "Alice" has created folder "uploadFolder"
@@ -18,7 +18,7 @@ Feature: date search
| new |
| spaces |
@issue-10329
Scenario Outline: search resources using different search patterns (KQL feature) in the personal space
Given user "Alice" uploads a file "filesForUpload/textfile.txt" to "/today.txt" with mtime "today" via TUS inside of the space "Personal" using the WebDAV API
And user "Alice" uploads a file "filesForUpload/textfile.txt" to "/yesterday.txt" with mtime "yesterday" via TUS inside of the space "Personal" using the WebDAV API
@@ -49,7 +49,7 @@ Feature: date search
# Mtime<$today. "<" has to be escaped
| Mtime&lt;$today | /yesterday.txt | /lastYear.txt | /today.txt | |
@issue-10329
Scenario: search resources using different search patterns (KQL feature) in the shares folder
Given user "Brian" has been created with default attributes and without skeleton files
And using spaces DAV path

View File

@@ -14,7 +14,7 @@ Feature: Search
And user "Alice" has created a folder "folderMain/SubFolder1/subFOLDER2" in space "project101"
And user "Alice" has uploaded a file inside space "project101" with content "some content" to "folderMain/SubFolder1/subFOLDER2/insideTheFolder.txt"
@issue-10329
Scenario Outline: user can search items inside project space
Given using <dav-path-version> DAV path
And user "Alice" has created a folder "AlicePersonal" in space "Personal"
@@ -42,7 +42,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: user can search items inside personal space
Given using <dav-path-version> DAV path
And user "Alice" has created a folder "AlicePersonal" in space "Personal"
@@ -97,7 +97,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: user can search hidden files
Given using <dav-path-version> DAV path
And user "Alice" has created a folder ".space" in space "project101"
@@ -172,20 +172,15 @@ Feature: Search
| new |
| spaces |
Scenario Outline: user can search project space by name
Given using <dav-path-version> DAV path
@issue-10329
Scenario: user can search project space by name
Given using spaces DAV path
When user "Alice" searches for '*project101*' using the WebDAV API
Then the HTTP status code should be "207"
And the search result should contain "1" entries
And for user "Alice" the search result should contain space "project101"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@issue-10329
Scenario Outline: user can search inside folder in space
Given using <dav-path-version> DAV path
When user "Alice" searches for "*folder*" inside folder "/folderMain" in space "project101" using the WebDAV API
@@ -203,7 +198,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: search inside folder in shares
Given using <dav-path-version> DAV path
And user "Alice" has sent the following resource share invitation:
@@ -227,7 +222,7 @@ Feature: Search
| new |
| spaces |
@skipOnStable3.0
@issue-10329
Scenario Outline: search files inside the folder
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "hello world inside root" to "file1.txt"
@@ -248,7 +243,7 @@ Feature: Search
| new |
| spaces |
@issue-7114
@issue-7114 @issue-10329
Scenario Outline: search files inside the folder with white space character in its name
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/New Folder"
@@ -266,7 +261,7 @@ Feature: Search
| new |
| spaces |
@issue-7114
@issue-7114 @issue-10329
Scenario Outline: search files with white space character in its name
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/New Folder"
@@ -284,7 +279,7 @@ Feature: Search
| new |
| spaces |
@issue-enterprise-6000 @issue-7028 @issue-7092
@issue-enterprise-6000 @issue-7028 @issue-7092 @issue-10329
Scenario Outline: sharee cannot find resources that are not shared
Given using <dav-path-version> DAV path
And user "Alice" has created a folder "foo/sharedToBrian" in space "Alice Hansen"
@@ -308,7 +303,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: search resources using different search patterns (KQL feature)
Given using spaces DAV path
And user "Alice" has created a folder "subfolder" in space "project101"
@@ -325,7 +320,7 @@ Feature: Search
| name:*der2 | /folderMain/SubFolder1/subFOLDER2 | patern 'name:'' |
| name:"*der2" | /folderMain/SubFolder1/subFOLDER2 | pattern 'name:""' (with quotes) |
@issue-7812 @issue-8442
@issue-7812 @issue-8442 @issue-10329
Scenario: try to search with invalid patterns
Given using spaces DAV path
And user "Alice" has uploaded file with content "test file" to "testFile.txt"
@@ -333,7 +328,7 @@ Feature: Search
Then the HTTP status code should be "400"
And the value of the item "/d:error/s:message" in the response should be "error: bad request: the expression can't begin from a binary operator: 'AND'"
@issue-10329
Scenario Outline: search a file globally (in all spaces)
Given using <dav-path-version> DAV path
And user "Alice" has created a folder "AlicePersonal" in space "Personal"

View File

@@ -10,7 +10,7 @@ Feature: media type search
| Brian |
And using spaces DAV path
@issue-10329
Scenario Outline: search for files using media type
Given user "Alice" has uploaded file "filesForUpload/lorem.txt" to "/lorem.txt"
And user "Alice" has uploaded file "filesForUpload/simple.pdf" to "/simple.pdf"
@@ -38,7 +38,7 @@ Feature: media type search
| *rar* | /data.rar |
| *bzip2* | /data.tar.bz2 |
@issue-10329
Scenario Outline: search for files inside sub folders using media type
Given user "Alice" has created folder "/uploadFolder"
And user "Alice" has uploaded file "filesForUpload/lorem.txt" to "/uploadFolder/lorem.txt"
@@ -67,7 +67,7 @@ Feature: media type search
| *rar* | /uploadFolder/data.rar |
| *bzip2* | /uploadFolder/data.tar.bz2 |
@issue-10329
Scenario Outline: search for file inside project space using media type
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project101" with the default quota using the Graph API
@@ -97,7 +97,7 @@ Feature: media type search
| *rar* | /data.rar |
| *bzip2* | /data.tar.bz2 |
@issue-10329
Scenario Outline: sharee searches for shared files using media type
Given user "Alice" has created folder "/uploadFolder"
And user "Alice" has uploaded file "filesForUpload/lorem.txt" to "/uploadFolder/lorem.txt"
@@ -133,7 +133,7 @@ Feature: media type search
| *rar* | /uploadFolder/data.rar |
| *bzip2* | /uploadFolder/data.tar.bz2 |
@issue-10329
Scenario Outline: space viewer searches for files using mediatype filter
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project101" with the default quota using the Graph API
@@ -168,7 +168,7 @@ Feature: media type search
| *rar* | /data.rar |
| *bzip2* | /data.tar.bz2 |
@issue-10329
Scenario: search files with different mediatype filter
Given user "Alice" has created folder "testFolder"
And user "Alice" has uploaded file "filesForUpload/lorem.txt" to "lorem.txt"

View File

@@ -6,7 +6,7 @@ Feature: tag search
Background:
Given user "Alice" has been created with default attributes and without skeleton files
@issue-10329
Scenario Outline: search files by tag
Given using <dav-path-version> DAV path
And user "Alice" has created the following folders
@@ -35,7 +35,7 @@ Feature: tag search
| new |
| spaces |
@issue-10329
Scenario Outline: search project space files by tag
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
@@ -67,7 +67,7 @@ Feature: tag search
| dav-path-version |
| spaces |
@issue-10329
Scenario Outline: search folders using a tag
Given using <dav-path-version> DAV path
And user "Alice" has created folder "uploadFolder1"
@@ -88,7 +88,7 @@ Feature: tag search
| new |
| spaces |
@issue-10329
Scenario Outline: search project space folders by tag
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
@@ -115,7 +115,7 @@ Feature: tag search
| dav-path-version |
| spaces |
@issue-10329
Scenario Outline: sharee searches shared files using a tag
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
@@ -149,7 +149,7 @@ Feature: tag search
| dav-path-version |
| spaces |
@issue-10329
Scenario Outline: sharee searches shared project space files using a tag
Given using spaces DAV path
And user "Brian" has been created with default attributes and without skeleton files
@@ -204,7 +204,7 @@ Feature: tag search
| new |
| spaces |
@issue-10329
Scenario Outline: search restored files using a tag
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "hello world" to "file1.txt"
@@ -223,7 +223,7 @@ Feature: tag search
| new |
| spaces |
@issue-10329
Scenario Outline: search restored version of a file using a tag
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "version one file" to "file.txt"
@@ -242,7 +242,7 @@ Feature: tag search
| new |
| spaces |
@issue-10329
Scenario Outline: search resources using different search patterns (KQL feature)
Given using spaces DAV path
And user "Alice" has created the following folders

View File

@@ -7,7 +7,7 @@ Feature: content search
Background:
Given user "Alice" has been created with default attributes and without skeleton files
@issue-10329
Scenario Outline: search files by content
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "hello world from nepal" to "keywordAtStart.txt"
@@ -26,7 +26,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: search files by different content types
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "Using k6, you can test the reliability and performance of your systems" to "wordWithNumber.md"
@@ -64,7 +64,7 @@ Feature: content search
| new |
| spaces |
@env-config
@env-config @issue-10329
Scenario Outline: search files by stop words when clean_stop_words is disabled
Given using <dav-path-version> DAV path
And the config "SEARCH_EXTRACTOR_TIKA_CLEAN_STOP_WORDS" has been set to "false"
@@ -83,7 +83,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: sharee searches files by content
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
@@ -111,7 +111,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: search deleted files by content
Given using <dav-path-version> DAV path
And user "Alice" has created folder "uploadFolder"
@@ -130,7 +130,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: search restored files by content
Given using <dav-path-version> DAV path
And user "Alice" has created folder "uploadFolder"
@@ -147,7 +147,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: search restored version of a file by content
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "hello world" to "test.txt"
@@ -163,7 +163,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: search project space files by content
Given using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
@@ -186,7 +186,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: sharee searches shared project space files by content
Given using spaces DAV path
And user "Brian" has been created with default attributes and without skeleton files
@@ -215,7 +215,7 @@ Feature: content search
| new |
| spaces |
@issue-10329
Scenario Outline: search resources using different search patterns (KQL feature)
Given using spaces DAV path
And user "Alice" has uploaded file with content "hello world, let start to test" to "technical task.txt"
@@ -238,7 +238,7 @@ Feature: content search
| content:hel* AND tag:test | 1 | /technical task.txt | |
| (name:*task* AND content:hel*) NOT tag:test | 1 | /task comments.txt | |
@issue-10329
Scenario Outline: search across files with different format with search text highlight
Given using <dav-path-version> DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API

View File

@@ -474,7 +474,7 @@ Feature: Create a link share for a resource
| internal |
| blocksDownload |
@env-config
@env-config @issue-9724 @issue-10331
Scenario: set password on a file's link share using permissions endpoint
Given the following configs have been set:
| config | value |
@@ -1221,7 +1221,7 @@ Feature: Create a link share for a resource
| password | blocksDownload |
| ownCloud | blocksDownload |
@env-config
@env-config @issue-9724 @issue-10331
Scenario: set password on a existing link share of a file inside project-space using permissions endpoint
Given the following configs have been set:
| config | value |

View File

@@ -205,7 +205,7 @@ Feature: Update a link share for a resource
}
"""
@issue-9724 @issue-10331
Scenario: update password of a file's link share using permissions endpoint
Given user "Alice" has uploaded file with content "other data" to "textfile1.txt"
And user "Alice" has created the following resource link share:
@@ -283,7 +283,7 @@ Feature: Update a link share for a resource
| password |
| ownCloud |
@env-config
@env-config @issue-9724 @issue-10331
Scenario: set password on a existing link share of a folder inside project-space using permissions endpoint
Given the following configs have been set:
| config | value |

View File

@@ -6,7 +6,7 @@ Feature: Update a link share for a resource
| username |
| Alice |
@env-config
@env-config @issue-9724 @issue-10331
Scenario: set password on a existing link share of a project-space drive using root endpoint
Given the following configs have been set:
| config | value |
@@ -38,7 +38,7 @@ Feature: Update a link share for a resource
"""
And the public should be able to download file "textfile.txt" from the last link share with password "%public%" and the content should be "to share"
@issue-9724 @issue-10331
Scenario: update password on a existing link share of a project-space drive using root endpoint
And using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API

View File

@@ -25,7 +25,7 @@ Feature: A manager of the space can edit public link
And user "Alice" has uploaded a file inside space "edit space" with content "some content" to "test.txt"
And using SharingNG
@issue-9724 @issue-10331
Scenario Outline: manager of the space can edit public link.
Given using OCS API version "2"
When user "Alice" updates the last public link share using the sharing API with

View File

@@ -14,29 +14,29 @@ Feature: public link for a space
| permissionsRole | view |
And using SharingNG
@issue-10331
Scenario: public tries to upload a file in the public space
When the public uploads file "test.txt" with content "test" using the new public WebDAV API
And the HTTP status code should be "403"
@issue-10331
Scenario: public tries to create a folder in the public space
When the public creates folder "created-by-public" using the new public WebDAV API
And the HTTP status code should be "403"
@issue-10331
Scenario: public tries to delete a file in the public space
Given user "Alice" has uploaded a file inside space "public space" with content "some content" to "test.txt"
When the public deletes file "test.txt" from the last public link share using the new public WebDAV API
And the HTTP status code should be "403"
@issue-10331
Scenario: public tries to delete a folder in the public space
And user "Alice" has created a folder "/public-folder" in space "public space"
When the public deletes folder "public-folder" from the last public link share using the new public WebDAV API
And the HTTP status code should be "403"
@issue-10331
Scenario: public tries to change content of a resources in the public space
Given user "Alice" has uploaded a file inside space "public space" with content "some content" to "test.txt"
When the public overwrites file "test.txt" with content "public content" using the new WebDAV API

View File

@@ -40,7 +40,7 @@ Feature: upload resources using TUS protocol
| test.txt |
| upload.txt |
@issue-10346
Scenario Outline: upload a zero-byte file inside a shared folder
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
@@ -84,7 +84,7 @@ Feature: upload resources using TUS protocol
When user "Alice" uploads a file from "filesForUpload/zerobyte.txt" to "textfile.txt" via TUS inside of the space "new-space" using the WebDAV API
Then for user "Alice" the content of the file "textfile.txt" of the space "new-space" should be ""
@issue-8003
@issue-8003 @issue-10346
Scenario Outline: replace a shared file with zero-byte file
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files

View File

@@ -8,162 +8,126 @@ Feature: copying file using file id
And user "Alice" has been created with default attributes and without skeleton files
Scenario Outline: copy a file into a folder in personal space
Scenario: copy a file into a folder in personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "/textfile.txt" into "/folder" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" copies a file "/textfile.txt" into "/folder" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder" of the space "Personal" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file into a sub-folder in personal space
Scenario: copy a file into a sub-folder in personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has created folder "folder/sub-folder"
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "/textfile.txt" into "/folder/sub-folder" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" copies a file "/textfile.txt" into "/folder/sub-folder" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder/sub-folder" of the space "Personal" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from a folder into root of personal space
Scenario: copy a file from a folder into root of personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has uploaded file with content "some data" to "folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "folder/textfile.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" copies a file "folder/textfile.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder" of the space "Personal" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from sub-folder into root of personal space
Scenario: copy a file from sub-folder into root of personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has created folder "folder/sub-folder"
And user "Alice" has uploaded file with content "some data" to "folder/sub-folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "folder/sub-folder/textfile.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" copies a file "folder/sub-folder/textfile.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder/sub-folder" of the space "Personal" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file into a folder in project space
Scenario: copy a file into a folder in project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has created a folder "/folder" in space "project-space"
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "/textfile.txt" into "/folder" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" copies a file "/textfile.txt" into "/folder" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder" of the space "project-space" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file into a sub-folder in project space
Scenario: copy a file into a sub-folder in project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has created a folder "folder/sub-folder" in space "project-space"
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "/textfile.txt" into "/folder/sub-folder" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" copies a file "/textfile.txt" into "/folder/sub-folder" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder/sub-folder" of the space "project-space" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from a folder into root of project space
Scenario: copy a file from a folder into root of project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has created a folder "folder" in space "project-space"
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "folder/textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" copies a file "folder/textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder" of the space "project-space" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from sub-folder into root of project space
Scenario: copy a file from sub-folder into root of project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has created a folder "folder/sub-folder" in space "project-space"
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "folder/sub-folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "folder/sub-folder/textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" copies a file "folder/sub-folder/textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
And for user "Alice" folder "folder/sub-folder" of the space "project-space" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from personal to project space
Scenario: copy a file from personal to project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has uploaded file with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" copies a file "/textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" copies a file "/textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
And for user "Alice" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from sub-folder to root folder inside Shares space
Scenario: copy a file from sub-folder to root folder inside Shares space
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/folder"
And user "Alice" has created folder "folder/sub-folder"
@@ -176,7 +140,7 @@ Feature: copying file using file id
| shareType | user |
| permissionsRole | Editor |
And user "Brian" has a share "folder" synced
When user "Brian" copies a file "Shares/folder/sub-folder/test.txt" into "Shares/folder" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" copies a file "Shares/folder/sub-folder/test.txt" into "Shares/folder" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
@@ -186,13 +150,9 @@ Feature: copying file using file id
| test.txt |
And for user "Alice" folder "folder/sub-folder" of the space "Personal" should contain these files:
| test.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from personal to share space
Scenario: copy a file from personal to share space
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/folder"
And user "Alice" has sent the following resource share invitation:
@@ -205,7 +165,7 @@ Feature: copying file using file id
And user "Brian" has uploaded file with content "some data" to "/test.txt"
And we save it into "FILEID"
And user "Brian" has a share "folder" synced
When user "Brian" copies a file "/test.txt" into "Shares/folder" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" copies a file "/test.txt" into "Shares/folder" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
@@ -213,10 +173,6 @@ Feature: copying file using file id
| test.txt |
And for user "Alice" folder "folder" of the space "Personal" should contain these files:
| test.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: copy a file from share to personal space
@@ -231,7 +187,7 @@ Feature: copying file using file id
| shareType | user |
| permissionsRole | <permission-role> |
And user "Brian" has a share "folder" synced
When user "Brian" copies a file "/test.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Brian" copies a file "/test.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
@@ -240,16 +196,13 @@ Feature: copying file using file id
And for user "Alice" folder "folder" of the space "Personal" should contain these files:
| test.txt |
Examples:
| permission-role | dav-path |
| Editor | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Editor | /dav/spaces/<<FILEID>> |
| Viewer | /dav/spaces/<<FILEID>> |
| Uploader | /dav/spaces/<<FILEID>> |
| permission-role |
| Editor |
| Viewer |
| Uploader |
Scenario Outline: sharee tries to copy a file from shares space with secure viewer to personal space
Scenario: sharee tries to copy a file from shares space with secure viewer to personal space
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/folder"
And user "Alice" has uploaded file with content "some data" to "/folder/test.txt"
@@ -261,16 +214,12 @@ Feature: copying file using file id
| shareType | user |
| permissionsRole | Secure viewer |
And user "Brian" has a share "folder" synced
When user "Brian" copies a file "/test.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Brian" copies a file "/test.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
And for user "Brian" folder "/" of the space "Personal" should not contain these files:
| test.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee copies a file from shares to project space
@@ -292,7 +241,7 @@ Feature: copying file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" copies a file "Shares/folder/test.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Brian" copies a file "Shares/folder/test.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
@@ -301,19 +250,13 @@ Feature: copying file using file id
And for user "Alice" folder "/" of the space "project-space" should contain these files:
| test.txt |
Examples:
| permission-role | space-role | dav-path |
| Viewer | Manager | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Manager | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | Manager | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Manager | /dav/spaces/<<FILEID>> |
| Viewer | Space Editor | /dav/spaces/<<FILEID>> |
| Editor | Manager | /dav/spaces/<<FILEID>> |
| Editor | Space Editor | /dav/spaces/<<FILEID>> |
| Uploader | Manager | /dav/spaces/<<FILEID>> |
| Uploader | Space Editor | /dav/spaces/<<FILEID>> |
| permission-role | space-role |
| Viewer | Manager |
| Viewer | Space Editor |
| Editor | Manager |
| Editor | Space Editor |
| Uploader | Manager |
| Uploader | Space Editor |
Scenario Outline: sharee tries to copy a file from shares to project space
@@ -335,7 +278,7 @@ Feature: copying file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" copies a file "Shares/folder/test.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Brian" copies a file "Shares/folder/test.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
@@ -344,19 +287,13 @@ Feature: copying file using file id
And for user "Alice" folder "/" of the space "project-space" should not contain these files:
| test.txt |
Examples:
| permission-role | space-role | dav-path |
| Secure viewer | Manager | /remote.php/dav/spaces/<<FILEID>> |
| Secure viewer | Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Secure viewer | Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Secure viewer | Manager | /dav/spaces/<<FILEID>> |
| Secure viewer | Space Viewer | /dav/spaces/<<FILEID>> |
| Secure viewer | Space Editor | /dav/spaces/<<FILEID>> |
| Editor | Space Viewer | /dav/spaces/<<FILEID>> |
| Viewer | Space Viewer | /dav/spaces/<<FILEID>> |
| Uploader | Space Viewer | /dav/spaces/<<FILEID>> |
| permission-role | space-role |
| Secure viewer | Manager |
| Secure viewer | Space Viewer |
| Secure viewer | Space Editor |
| Editor | Space Viewer |
| Viewer | Space Viewer |
| Uploader | Space Viewer |
Scenario Outline: sharee copies a file between shares spaces
@@ -379,7 +316,7 @@ Feature: copying file using file id
| shareType | user |
| permissionsRole | <to-share-role> |
And user "Brian" has a share "share2" synced
When user "Brian" copies a file "Shares/share1/test.txt" into "share2" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" copies a file "Shares/share1/test.txt" into "share2" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "share1" of the space "Shares" should contain these files:
| test.txt |
@@ -390,19 +327,13 @@ Feature: copying file using file id
And for user "Alice" folder "share2" of the space "Personal" should contain these files:
| test.txt |
Examples:
| from-share-role | to-share-role | dav-path |
| Viewer | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Editor | /dav/spaces/<<FILEID>> |
| Viewer | Uploader | /dav/spaces/<<FILEID>> |
| Editor | Editor | /dav/spaces/<<FILEID>> |
| Editor | Uploader | /dav/spaces/<<FILEID>> |
| Uploader | Editor | /dav/spaces/<<FILEID>> |
| Uploader | Uploader | /dav/spaces/<<FILEID>> |
| from-share-role | to-share-role |
| Viewer | Editor |
| Viewer | Uploader |
| Editor | Editor |
| Editor | Uploader |
| Uploader | Editor |
| Uploader | Uploader |
Scenario Outline: sharee tries to copy a file between shares space
@@ -425,7 +356,7 @@ Feature: copying file using file id
| shareType | user |
| permissionsRole | <to-share-role> |
And user "Brian" has a share "share2" synced
When user "Brian" copies a file "Shares/share1/test.txt" into "share2" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" copies a file "Shares/share1/test.txt" into "share2" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And for user "Brian" folder "share1" of the space "Shares" should contain these files:
| test.txt |
@@ -436,27 +367,17 @@ Feature: copying file using file id
And for user "Alice" folder "share2" of the space "Personal" should not contain these files:
| test.txt |
Examples:
| from-share-role | to-share-role | dav-path |
| Secure viewer | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Secure viewer | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Secure viewer | Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Secure viewer | Secure viewer | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Secure viewer | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Secure viewer | /remote.php/dav/spaces/<<FILEID>> |
| Uploader | Secure viewer | /remote.php/dav/spaces/<<FILEID>> |
| Secure viewer | Viewer | /dav/spaces/<<FILEID>> |
| Secure viewer | Editor | /dav/spaces/<<FILEID>> |
| Secure viewer | Uploader | /dav/spaces/<<FILEID>> |
| Secure viewer | Secure viewer | /dav/spaces/<<FILEID>> |
| Viewer | Viewer | /dav/spaces/<<FILEID>> |
| Editor | Viewer | /dav/spaces/<<FILEID>> |
| Uploader | Viewer | /dav/spaces/<<FILEID>> |
| Viewer | Secure viewer | /dav/spaces/<<FILEID>> |
| Editor | Secure viewer | /dav/spaces/<<FILEID>> |
| Uploader | Secure viewer | /dav/spaces/<<FILEID>> |
| from-share-role | to-share-role |
| Secure viewer | Viewer |
| Secure viewer | Editor |
| Secure viewer | Uploader |
| Secure viewer | Secure viewer |
| Viewer | Viewer |
| Editor | Viewer |
| Uploader | Viewer |
| Viewer | Secure viewer |
| Editor | Secure viewer |
| Uploader | Secure viewer |
Scenario Outline: copy a file from project to personal space
@@ -470,20 +391,17 @@ Feature: copying file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" copies a file "/textfile.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Brian" copies a file "/textfile.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
And for user "Brian" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
Examples:
| space-role | dav-path |
| Manager | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Manager | /dav/spaces/<<FILEID>> |
| Space Editor | /dav/spaces/<<FILEID>> |
| Space Viewer | /dav/spaces/<<FILEID>> |
| space-role |
| Manager |
| Space Editor |
| Space Viewer |
Scenario Outline: copy a file between two project spaces
@@ -503,7 +421,7 @@ Feature: copying file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <to-space-role> |
When user "Brian" copies a file "textfile.txt" into "/" inside space "second-project-space" using file-id path "<dav-path>"
When user "Brian" copies a file "textfile.txt" into "/" inside space "second-project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" the space "second-project-space" should contain these entries:
| textfile.txt |
@@ -512,19 +430,13 @@ Feature: copying file using file id
And for user "Alice" the space "second-project-space" should contain these entries:
| textfile.txt |
Examples:
| from-space-role | to-space-role | dav-path |
| Manager | Manager | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Manager | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Manager | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Manager | /dav/spaces/<<FILEID>> |
| Manager | Space Editor | /dav/spaces/<<FILEID>> |
| Space Editor | Manager | /dav/spaces/<<FILEID>> |
| Space Editor | Space Editor | /dav/spaces/<<FILEID>> |
| Space Viewer | Manager | /dav/spaces/<<FILEID>> |
| Space Viewer | Space Editor | /dav/spaces/<<FILEID>> |
| from-space-role | to-space-role |
| Manager | Manager |
| Manager | Space Editor |
| Space Editor | Manager |
| Space Editor | Space Editor |
| Space Viewer | Manager |
| Space Viewer | Space Editor |
Scenario Outline: try to copy a file from a project to another project space with read permission
@@ -544,7 +456,7 @@ Feature: copying file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <to-space-role> |
When user "Brian" copies a file "textfile.txt" into "/" inside space "second-project-space" using file-id path "<dav-path>"
When user "Brian" copies a file "textfile.txt" into "/" inside space "second-project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And for user "Brian" the space "second-project-space" should not contain these entries:
| textfile.txt |
@@ -553,13 +465,10 @@ Feature: copying file using file id
But for user "Alice" the space "second-project-space" should not contain these entries:
| textfile.txt |
Examples:
| from-space-role | to-space-role | dav-path |
| Manager | Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Space Viewer | /dav/spaces/<<FILEID>> |
| Space Editor | Space Viewer | /dav/spaces/<<FILEID>> |
| Space Viewer | Space Viewer | /dav/spaces/<<FILEID>> |
| from-space-role | to-space-role |
| Manager | Space Viewer |
| Space Editor | Space Viewer |
| Space Viewer | Space Viewer |
Scenario Outline: copy a file from project to shares space
@@ -581,7 +490,7 @@ Feature: copying file using file id
| shareType | user |
| permissionsRole | <permissions> |
And user "Brian" has a share "testshare" synced
When user "Brian" copies a file "textfile.txt" into "testshare" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" copies a file "textfile.txt" into "testshare" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
@@ -590,19 +499,13 @@ Feature: copying file using file id
And for user "Alice" folder "testshare" of the space "Personal" should contain these files:
| textfile.txt |
Examples:
| space-role | permissions | dav-path |
| Manager | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Uploader | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Editor | /dav/spaces/<<FILEID>> |
| Manager | Uploader | /dav/spaces/<<FILEID>> |
| Space Editor | Editor | /dav/spaces/<<FILEID>> |
| Space Editor | Uploader | /dav/spaces/<<FILEID>> |
| Space Viewer | Editor | /dav/spaces/<<FILEID>> |
| Space Viewer | Uploader | /dav/spaces/<<FILEID>> |
| space-role | permissions |
| Manager | Editor |
| Manager | Uploader |
| Space Editor | Editor |
| Space Editor | Uploader |
| Space Viewer | Editor |
| Space Viewer | Uploader |
Scenario Outline: try to copy a file from project to shares space with read permission
@@ -624,7 +527,7 @@ Feature: copying file using file id
| shareType | user |
| permissionsRole | <permissions> |
And user "Brian" has a share "testshare" synced
When user "Brian" copies a file "textfile.txt" into "testshare" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" copies a file "textfile.txt" into "testshare" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And for user "Brian" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
@@ -633,16 +536,10 @@ Feature: copying file using file id
And for user "Alice" folder "testshare" of the space "Personal" should not contain these files:
| textfile.txt |
Examples:
| space-role | permissions | dav-path |
| Manager | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Secure viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Secure viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Secure viewer | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Viewer | /dav/spaces/<<FILEID>> |
| Manager | Secure viewer | /dav/spaces/<<FILEID>> |
| Space Editor | Viewer | /dav/spaces/<<FILEID>> |
| Space Editor | Secure viewer | /dav/spaces/<<FILEID>> |
| Space Viewer | Viewer | /dav/spaces/<<FILEID>> |
| Space Viewer | Secure viewer | /dav/spaces/<<FILEID>> |
| space-role | permissions |
| Manager | Viewer |
| Manager | Secure viewer |
| Space Editor | Viewer |
| Space Editor | Secure viewer |
| Space Viewer | Viewer |
| Space Viewer | Secure viewer |

View File

@@ -24,10 +24,10 @@ Feature: checking file versions using file id
| shareType | user |
| permissionsRole | <role> |
And user "Brian" has a share "text.txt" synced
When user "Alice" gets the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Alice" gets the number of versions of file "/text.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
When user "Brian" tries to get the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Brian" tries to get the number of versions of file "/text.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
Examples:
| role |
@@ -41,10 +41,10 @@ Feature: checking file versions using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Alice" gets the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Alice" gets the number of versions of file "/text.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
When user "Brian" gets the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Brian" gets the number of versions of file "/text.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
Examples:
@@ -59,7 +59,7 @@ Feature: checking file versions using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | Space Viewer |
When user "Brian" tries to get the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Brian" tries to get the number of versions of file "/text.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
@issue-7738
@@ -73,10 +73,10 @@ Feature: checking file versions using file id
| permissionsRole | <role> |
And user "Brian" has a share "text.txt" synced
And user "Alice" has moved file "text.txt" to "/testFolder/movedText.txt" in space "Project1"
When user "Alice" gets the number of versions of file "/testFolder/movedText.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Alice" gets the number of versions of file "/testFolder/movedText.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
When user "Brian" tries to get the number of versions of file "/Shares/testFolder/movedText.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Brian" tries to get the number of versions of file "/Shares/testFolder/movedText.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
Examples:
| role |
@@ -99,7 +99,7 @@ Feature: checking file versions using file id
| shareType | user |
| permissionsRole | Manager |
And user "Alice" has moved file "text.txt" to "/testFolder/movedText.txt" in space "Project1"
When user "Brian" gets the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Brian" gets the number of versions of file "/text.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
@@ -110,7 +110,7 @@ Feature: checking file versions using file id
And user "Alice" has uploaded file with content "some data - edited" to "<source>textfile.txt"
And we save it into "FILEID"
And user "Alice" has moved file "<source>textfile.txt" to "<destination>textfile.txt" in space "Personal"
When user "Alice" gets the number of versions of file "<destination>textfile.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Alice" gets the number of versions of file "<destination>textfile.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
Examples:
@@ -124,9 +124,10 @@ Feature: checking file versions using file id
And user "Alice" has uploaded file with content "some data" to "<source>textfile.txt"
And user "Alice" has uploaded file with content "some data - edited" to "<source>textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "<source>textfile.txt" into "<destination>" inside space "Personal" using file-id path "/dav/spaces/<<FILEID>>"
And using spaces DAV path
When user "Alice" moves a file "<source>textfile.txt" into "<destination>" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
When user "Alice" gets the number of versions of file "<destination>textfile.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Alice" gets the number of versions of file "<destination>textfile.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
Examples:
@@ -141,7 +142,7 @@ Feature: checking file versions using file id
And user "Alice" has uploaded a file inside space "Project1" with content "some data - edited" to "<source>textfile.txt"
And we save it into "FILEID"
And user "Alice" has moved file "<source>textfile.txt" to "<destination>textfile.txt" in space "Project1"
When user "Alice" gets the number of versions of file "<source>textfile.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Alice" gets the number of versions of file "<source>textfile.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
Examples:
@@ -155,9 +156,9 @@ Feature: checking file versions using file id
And user "Alice" has uploaded a file inside space "Project1" with content "some data" to "<source>textfile.txt"
And user "Alice" has uploaded a file inside space "Project1" with content "some data - edited" to "<source>textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "<source>textfile.txt" into "<destination>" inside space "Project1" using file-id path "/dav/spaces/<<FILEID>>"
When user "Alice" moves a file "<source>textfile.txt" into "<destination>" inside space "Project1" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
When user "Alice" gets the number of versions of file "<destination>textfile.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Alice" gets the number of versions of file "<destination>textfile.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "1"
Examples:
@@ -173,7 +174,7 @@ Feature: checking file versions using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | Space Editor Without Versions |
When user "Brian" gets the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
When user "Brian" gets the number of versions of file "/text.txt" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
@@ -182,7 +183,7 @@ Feature: checking file versions using file id
| space | Project1 |
| permissionsRole | <permissions-role> |
| password | %public% |
When the public tries to get the number of versions of file "/text.txt" with password "%public%" using file-id path "/meta/<<FILEID>>/v"
When the public tries to get the number of versions of file "/text.txt" with password "%public%" using file-id "<<FILEID>>"
Then the HTTP status code should be "401"
Examples:
| permissions-role |
@@ -200,7 +201,7 @@ Feature: checking file versions using file id
| space | Personal |
| permissionsRole | <permissions-role> |
| password | %public% |
When the public tries to get the number of versions of file "/parent.txt" with password "%public%" using file-id path "/meta/<<FILEID>>/v"
When the public tries to get the number of versions of file "/parent.txt" with password "%public%" using file-id "<<FILEID>>"
Then the HTTP status code should be "401"
Examples:
| permissions-role |

View File

@@ -15,9 +15,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: get content of a file inside a folder
@@ -28,9 +27,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: get content of a file inside a project space
@@ -42,9 +40,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee gets content of a shared file
@@ -63,7 +60,6 @@ Feature: accessing files using file id
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
@@ -83,9 +79,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee gets content of a file inside a shared space
@@ -103,9 +98,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: user tries to get content of file owned by others
@@ -115,9 +109,8 @@ Feature: accessing files using file id
When user "Brian" sends HTTP method "GET" to URL "<dav-path>"
Then the HTTP status code should be "404"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee gets content of a shared file when sync is disable
@@ -135,9 +128,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee gets content of a file inside a shared folder when sync is disable
@@ -156,9 +148,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: user who is member of group gets content of a shared file when sync is disable
@@ -179,9 +170,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: user who is member of group gets content of a shared folder when sync is disable
@@ -203,9 +193,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee gets content of a shared file in project space when sync is disabled
@@ -226,9 +215,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee gets content of a file inside a shared folder in project space when sync is disabled
@@ -250,9 +238,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: user who is member of group gets content of a shared file in project space when sync is disabled
@@ -275,9 +262,8 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: user who is member of group gets content of a file from shared folder in project space when sync is disabled
@@ -301,6 +287,5 @@ Feature: accessing files using file id
Then the HTTP status code should be "200"
And the downloaded content should be "some content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |

View File

@@ -8,83 +8,63 @@ Feature: moving/renaming file using file id
And user "Alice" has been created with default attributes and without skeleton files
Scenario Outline: move a file into a folder inside personal space
Scenario: move a file into a folder inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "/textfile.txt" into "/folder" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" moves a file "/textfile.txt" into "/folder" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "folder" of the space "Personal" should contain these files:
| textfile.txt |
But for user "Alice" the space "Personal" should not contain these entries:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file into a sub-folder inside personal space
Scenario: move a file into a sub-folder inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has created folder "folder/sub-folder"
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "/textfile.txt" into "/folder/sub-folder" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" moves a file "/textfile.txt" into "/folder/sub-folder" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "folder/sub-folder/" of the space "Personal" should contain these files:
| textfile.txt |
But for user "Alice" the space "Personal" should not contain these entries:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file from folder to root inside personal space
Scenario: move a file from folder to root inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has uploaded file with content "some data" to "folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "folder/textfile.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" moves a file "folder/textfile.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" the space "Personal" should contain these entries:
| textfile.txt |
But for user "Alice" folder "folder" of the space "Personal" should not contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file from sub-folder to root inside personal space
Scenario: move a file from sub-folder to root inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has created folder "folder/sub-folder"
And user "Alice" has uploaded file with content "some data" to "folder/sub-folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "folder/sub-folder/textfile.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" moves a file "folder/sub-folder/textfile.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" the space "Personal" should contain these entries:
| textfile.txt |
But for user "Alice" folder "folder/sub-folder" of the space "Personal" should not contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
@issue-1976
Scenario Outline: try to move a file into same folder with same name
Scenario: try to move a file into same folder with same name
And user "Alice" has uploaded file with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "textfile.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" moves a file "textfile.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And as "Alice" file "textfile.txt" should not exist in the trashbin of the space "Personal"
And for user "Alice" the content of the file "textfile.txt" of the space "Personal" should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file from personal to share space
@@ -99,7 +79,7 @@ Feature: moving/renaming file using file id
And user "Brian" has a share "folder" synced
And user "Brian" has uploaded file with content "some data" to "/test.txt"
And we save it into "FILEID"
When user "Brian" moves a file "test.txt" into "folder" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" moves a file "test.txt" into "folder" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And the value of the item "/d:error/s:message" in the response about user "Brian" should be "cross storage moves are not supported, use copy and delete"
And for user "Brian" folder "/" of the space "Personal" should contain these files:
@@ -107,11 +87,9 @@ Feature: moving/renaming file using file id
But for user "Alice" folder "folder" of the space "Personal" should not contain these files:
| test.txt |
Examples:
| permissions | dav-path |
| Editor | /remote.php/dav/spaces/<<FILEID>> |
| Editor | /dav/spaces/<<FILEID>> |
| Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | /dav/spaces/<<FILEID>> |
| permissions |
| Editor |
| Viewer |
@issue-7618
Scenario Outline: move a file from personal to project space
@@ -125,38 +103,31 @@ Feature: moving/renaming file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" moves a file "textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Brian" moves a file "textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "<http-status-code>"
And for user "Brian" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
But for user "Brian" folder "/" of the space "project-space" should not contain these files:
| textfile.txt |
Examples:
| space-role | http-status-code | dav-path |
| Manager | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Manager | 502 | /dav/spaces/<<FILEID>> |
| Space Editor | 502 | /dav/spaces/<<FILEID>> |
| Space Viewer | 403 | /dav/spaces/<<FILEID>> |
| space-role | http-status-code |
| Manager | 502 |
| Space Editor | 502 |
| Space Viewer | 403 |
@issue-7618
Scenario Outline: move a file to different name from personal space to project space
Scenario: move a file to different name from personal space to project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "Personal" with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "/textfile.txt" into "/renamed.txt" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" renames a file "/textfile.txt" into "/renamed.txt" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And the value of the item "/d:error/s:message" in the response about user "Alice" should be "move:error: not supported: cannot move across spaces"
And for user "Alice" folder "/" of the space "Personal" should contain these files:
| textfile.txt |
But for user "Alice" folder "/" of the space "project-space" should not contain these files:
| renamed.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file into a folder inside project space (manager/editor)
@@ -171,18 +142,16 @@ Feature: moving/renaming file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" moves a file "/textfile.txt" into "/folder" inside space "project-space" using file-id path "<dav-path>"
When user "Brian" moves a file "/textfile.txt" into "/folder" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "folder" of the space "project-space" should contain these files:
| textfile.txt |
But for user "Alice" the space "project-space" should not contain these entries:
| textfile.txt |
Examples:
| space-role | dav-path |
| Manager | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Manager | /dav/spaces/<<FILEID>> |
| Space Editor | /dav/spaces/<<FILEID>> |
| space-role |
| Manager |
| Space Editor |
@issue-1976
Scenario Outline: try to move a file within a project space into a folder with same name
@@ -196,21 +165,18 @@ Feature: moving/renaming file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" moves a file "textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Brian" moves a file "textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And as "Alice" file "textfile.txt" should not exist in the trashbin of the space "project-space"
And for user "Brian" the content of the file "textfile.txt" of the space "project-space" should be "some data"
Examples:
| space-role | dav-path |
| Manager | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Manager | /dav/spaces/<<FILEID>> |
| Space Viewer | /dav/spaces/<<FILEID>> |
| viewer | /dav/spaces/<<FILEID>> |
| space-role |
| Manager |
| Space Viewer |
| viewer |
Scenario Outline: try to move a file into a folder inside project space (viewer)
Scenario: try to move a file into a folder inside project space (viewer)
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created a space "project-space" with the default quota using the Graph API
@@ -222,70 +188,54 @@ Feature: moving/renaming file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | Space Viewer |
When user "Brian" moves a file "/textfile.txt" into "/folder" inside space "project-space" using file-id path "<dav-path>"
When user "Brian" moves a file "/textfile.txt" into "/folder" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And for user "Alice" the space "project-space" should contain these entries:
| textfile.txt |
But for user "Alice" folder "folder" of the space "project-space" should not contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file into a sub-folder inside project space
Scenario: move a file into a sub-folder inside project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has created a folder "folder/sub-folder" in space "project-space"
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "/textfile.txt" into "/folder/sub-folder" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" moves a file "/textfile.txt" into "/folder/sub-folder" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "folder/sub-folder/" of the space "project-space" should contain these files:
| textfile.txt |
But for user "Alice" the space "Personal" should not contain these entries:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file from folder to root inside project space
Scenario: move a file from folder to root inside project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has created a folder "folder" in space "project-space"
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "folder/textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" moves a file "folder/textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" the space "project-space" should contain these entries:
| textfile.txt |
But for user "Alice" folder "folder" of the space "project-space" should not contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file from sub-folder to root inside project space
Scenario: move a file from sub-folder to root inside project space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has created a folder "folder/sub-folder" in space "project-space"
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "folder/sub-folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" moves a file "folder/sub-folder/textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Alice" moves a file "folder/sub-folder/textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" the space "project-space" should contain these entries:
| textfile.txt |
But for user "Alice" folder "folder/sub-folder" of the space "project-space" should not contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
@issue-8116
Scenario Outline: move a file between two project spaces
@@ -305,42 +255,33 @@ Feature: moving/renaming file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <to-space-role> |
When user "Brian" moves a file "file.txt" into "/" inside space "second-project-space" using file-id path "<dav-path>"
When user "Brian" moves a file "file.txt" into "/" inside space "second-project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "<http-status-code>"
And for user "Brian" the space "second-project-space" should not contain these entries:
| file.txt |
But for user "Brian" the space "first-project-space" should contain these entries:
| file.txt |
Examples:
| from-space-role | to-space-role | http-status-code | dav-path |
| Manager | Manager | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Manager | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Space Editor | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Space Editor | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Space Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Space Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Manager | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Space Editor | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Space Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Manager | 502 | /dav/spaces/<<FILEID>> |
| Space Editor | Manager | 502 | /dav/spaces/<<FILEID>> |
| Manager | Space Editor | 502 | /dav/spaces/<<FILEID>> |
| Space Editor | Space Editor | 502 | /dav/spaces/<<FILEID>> |
| Manager | Space Viewer | 403 | /dav/spaces/<<FILEID>> |
| Space Editor | Space Viewer | 403 | /dav/spaces/<<FILEID>> |
| Space Viewer | Manager | 403 | /dav/spaces/<<FILEID>> |
| Space Viewer | Space Editor | 403 | /dav/spaces/<<FILEID>> |
| Space Viewer | Space Viewer | 403 | /dav/spaces/<<FILEID>> |
| from-space-role | to-space-role | http-status-code |
| Manager | Manager | 502 |
| Space Editor | Manager | 502 |
| Manager | Space Editor | 502 |
| Space Editor | Space Editor | 502 |
| Manager | Space Viewer | 403 |
| Space Editor | Space Viewer | 403 |
| Space Viewer | Manager | 403 |
| Space Viewer | Space Editor | 403 |
| Space Viewer | Space Viewer | 403 |
@issue-8116
Scenario Outline: move a file to different name between project spaces
Scenario: move a file to different name between project spaces
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "first-project-space" with the default quota using the Graph API
And user "Alice" has created a space "second-project-space" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "first-project-space" with content "data from first project space" to "firstProjectSpacetextfile.txt"
And user "Alice" has uploaded a file inside space "second-project-space" with content "data from second project space" to "secondProjectSpacetextfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "/secondProjectSpacetextfile.txt" into "/renamedSecondProjectSpacetextfile.txt" inside space "first-project-space" using file-id path "<dav-path>"
When user "Alice" renames a file "/secondProjectSpacetextfile.txt" into "/renamedSecondProjectSpacetextfile.txt" inside space "first-project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And the value of the item "/d:error/s:message" in the response about user "Alice" should be "move:error: not supported: cannot move across spaces"
And for user "Alice" folder "/" of the space "first-project-space" should contain these files:
@@ -349,10 +290,6 @@ Feature: moving/renaming file using file id
| secondProjectSpacetextfile.txt |
But for user "Alice" the space "first-project-space" should not contain these entries:
| renamedSecondProjectSpacetextfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file from project to shares space
@@ -374,26 +311,20 @@ Feature: moving/renaming file using file id
| shareType | user |
| permissionsRole | <permissions> |
And user "Brian" has a share "testshare" synced
When user "Brian" moves a file "textfile.txt" into "testshare" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" moves a file "textfile.txt" into "testshare" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And for user "Brian" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
But for user "Brian" folder "testshare" of the space "Shares" should not contain these files:
| textfile.txt |
Examples:
| space-role | permissions | dav-path |
| Manager | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Editor | /dav/spaces/<<FILEID>> |
| Space Editor | Editor | /dav/spaces/<<FILEID>> |
| Space Viewer | Editor | /dav/spaces/<<FILEID>> |
| Manager | Viewer | /dav/spaces/<<FILEID>> |
| Space Editor | Viewer | /dav/spaces/<<FILEID>> |
| Space Viewer | Viewer | /dav/spaces/<<FILEID>> |
| space-role | permissions |
| Manager | Editor |
| Space Editor | Editor |
| Space Viewer | Editor |
| Manager | Viewer |
| Space Editor | Viewer |
| Space Viewer | Viewer |
@issue-7618
Scenario Outline: move a file from project to personal space
@@ -407,54 +338,47 @@ Feature: moving/renaming file using file id
| sharee | Brian |
| shareType | user |
| permissionsRole | <space-role> |
When user "Brian" moves a file "/textfile.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Brian" moves a file "/textfile.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "<http-status-code>"
And for user "Brian" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
But for user "Brian" folder "/" of the space "Personal" should not contain these files:
| textfile.txt |
Examples:
| space-role | http-status-code | dav-path |
| Manager | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Manager | 502 | /dav/spaces/<<FILEID>> |
| Space Editor | 502 | /dav/spaces/<<FILEID>> |
| Space Viewer | 403 | /dav/spaces/<<FILEID>> |
| space-role | http-status-code |
| Manager | 502 |
| Space Editor | 502 |
| Space Viewer | 403 |
@issue-7618
Scenario Outline: move a file to different name from project space to personal space
Scenario: move a file to different name from project space to personal space
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "project-space" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "project-space" with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "/textfile.txt" into "/renamed.txt" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" renames a file "/textfile.txt" into "/renamed.txt" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And the value of the item "/d:error/s:message" in the response about user "Alice" should be "move:error: not supported: cannot move across spaces"
And for user "Alice" folder "/" of the space "project-space" should contain these files:
| textfile.txt |
But for user "Alice" folder "/" of the space "Personal" should not contain these files:
| renamed.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
@issue-7617
Scenario Outline: move a file into a folder within a shared folder (edit permissions)
Scenario: move a file into a folder within a shared folder (edit permissions)
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "folder"
And user "Alice" has created folder "folder/sub-folder"
And user "Alice" has uploaded file with content "some data" to "folder/test.txt"
And we save it into "FILEID"
And user "Alice" has sent the following resource share invitation:
| resource | folder |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions> |
| resource | folder |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Editor |
And user "Brian" has a share "folder" synced
When user "Brian" moves a file "Shares/folder/test.txt" into "folder/sub-folder" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" moves a file "Shares/folder/test.txt" into "folder/sub-folder" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "folder/sub-folder" of the space "Shares" should contain these files:
| test.txt |
@@ -464,36 +388,28 @@ Feature: moving/renaming file using file id
| test.txt |
And for user "Alice" folder "folder" of the space "Personal" should not contain these files:
| test.txt |
Examples:
| permissions | dav-path |
| Editor | /remote.php/dav/spaces/<<FILEID>> |
| Editor | /dav/spaces/<<FILEID>> |
@issue-1976
Scenario Outline: sharee tries to move a file into same shared folder with same name
Scenario: sharee tries to move a file into same shared folder with same name
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "folder"
And user "Alice" has uploaded file with content "some data" to "folder/test.txt"
And we save it into "FILEID"
And user "Alice" has sent the following resource share invitation:
| resource | folder |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | <permissions> |
| resource | folder |
| space | Personal |
| sharee | Brian |
| shareType | user |
| permissionsRole | Editor |
And user "Brian" has a share "/folder" synced
When user "Brian" moves a file "Shares/folder/test.txt" into "folder" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" moves a file "Shares/folder/test.txt" into "folder" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "403"
And as "Alice" file "test.txt" should not exist in the trashbin of the space "Personal"
And for user "Brian" the content of the file "folder/test.txt" of the space "Shares" should be "some data"
And for user "Alice" the content of the file "folder/test.txt" of the space "Personal" should be "some data"
Examples:
| permissions | dav-path |
| Editor | /remote.php/dav/spaces/<<FILEID>> |
| Editor | /dav/spaces/<<FILEID>> |
Scenario Outline: try to move a file into a folder within a shared folder (read permissions)
Scenario: try to move a file into a folder within a shared folder (read permissions)
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "folder"
And user "Alice" has created folder "folder/sub-folder"
@@ -506,7 +422,7 @@ Feature: moving/renaming file using file id
| shareType | user |
| permissionsRole | Viewer |
And user "Brian" has a share "folder" synced
When user "Brian" moves a file "Shares/folder/test.txt" into "folder/sub-folder" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" moves a file "Shares/folder/test.txt" into "folder/sub-folder" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And for user "Brian" folder "folder/sub-folder" of the space "Shares" should not contain these files:
| test.txt |
@@ -516,10 +432,6 @@ Feature: moving/renaming file using file id
| test.txt |
And for user "Alice" folder "folder" of the space "Personal" should contain these files:
| test.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file from one shared folder to another shared folder
@@ -542,22 +454,18 @@ Feature: moving/renaming file using file id
| shareType | user |
| permissionsRole | <to-permissions> |
And user "Brian" has a share "testshare2" synced
When user "Brian" moves a file "Shares/testshare1/textfile.txt" into "testshare2" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" moves a file "Shares/testshare1/textfile.txt" into "testshare2" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And for user "Brian" folder "testshare1" of the space "Shares" should contain these files:
| textfile.txt |
But for user "Brian" folder "testshare2" of the space "Shares" should not contain these files:
| textfile.txt |
Examples:
| from-permissions | to-permissions | dav-path |
| Editor | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Editor | /remote.php/dav/spaces/<<FILEID>> |
| Viewer | Viewer | /remote.php/dav/spaces/<<FILEID>> |
| Editor | Editor | /dav/spaces/<<FILEID>> |
| Editor | Viewer | /dav/spaces/<<FILEID>> |
| Viewer | Editor | /dav/spaces/<<FILEID>> |
| Viewer | Viewer | /dav/spaces/<<FILEID>> |
| from-permissions | to-permissions |
| Editor | Editor |
| Editor | Viewer |
| Viewer | Editor |
| Viewer | Viewer |
@issue-8124
Scenario Outline: move a file from share to personal space
@@ -572,18 +480,16 @@ Feature: moving/renaming file using file id
| shareType | user |
| permissionsRole | <permissions> |
And user "Brian" has a share "folder" synced
When user "Brian" moves a file "Shares/folder/test.txt" into "/" inside space "Personal" using file-id path "<dav-path>"
When user "Brian" moves a file "Shares/folder/test.txt" into "/" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "<http-status-code>"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
And for user "Brian" folder "/" of the space "Personal" should not contain these files:
| test.txt |
Examples:
| permissions | dav-path | http-status-code |
| Editor | /remote.php/dav/spaces/<<FILEID>> | 502 |
| Editor | /dav/spaces/<<FILEID>> | 502 |
| Viewer | /remote.php/dav/spaces/<<FILEID>> | 403 |
| Viewer | /dav/spaces/<<FILEID>> | 403 |
| permissions | http-status-code |
| Editor | 502 |
| Viewer | 403 |
@issue-8125
Scenario Outline: move a file from shares to project space
@@ -605,110 +511,84 @@ Feature: moving/renaming file using file id
| shareType | user |
| permissionsRole | <permissions> |
And user "Brian" has a share "testshare" synced
When user "Brian" moves a file "Shares/testshare/textfile.txt" into "/" inside space "project-space" using file-id path "<dav-path>"
When user "Brian" moves a file "Shares/testshare/textfile.txt" into "/" inside space "project-space" using file-id "<<FILEID>>"
Then the HTTP status code should be "<http-status-code>"
And for user "Brian" folder "testshare" of the space "Shares" should contain these files:
| textfile.txt |
But for user "Brian" folder "/" of the space "project-space" should not contain these files:
| textfile.txt |
Examples:
| space-role | permissions | http-status-code | dav-path |
| Manager | Editor | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Editor | 502 | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Editor | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Space Editor | Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Space Viewer | Viewer | 403 | /remote.php/dav/spaces/<<FILEID>> |
| Manager | Editor | 502 | /dav/spaces/<<FILEID>> |
| Space Editor | Editor | 502 | /dav/spaces/<<FILEID>> |
| Space Viewer | Editor | 403 | /dav/spaces/<<FILEID>> |
| Manager | Viewer | 403 | /dav/spaces/<<FILEID>> |
| Space Editor | Viewer | 403 | /dav/spaces/<<FILEID>> |
| Space Viewer | Viewer | 403 | /dav/spaces/<<FILEID>> |
| space-role | permissions | http-status-code |
| Manager | Editor | 502 |
| Space Editor | Editor | 502 |
| Space Viewer | Editor | 403 |
| Manager | Viewer | 403 |
| Space Editor | Viewer | 403 |
| Space Viewer | Viewer | 403 |
Scenario Outline: rename a root file inside personal space
Scenario: rename a root file inside personal space
Given user "Alice" has uploaded file with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "textfile.txt" into "renamed.txt" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" renames a file "textfile.txt" into "renamed.txt" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" the space "Personal" should contain these entries:
| renamed.txt |
But for user "Alice" the space "Personal" should not contain these entries:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: rename a file and move into a folder inside personal space
Scenario: rename a file and move into a folder inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "textfile.txt" into "/folder/renamed.txt" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" renames a file "textfile.txt" into "/folder/renamed.txt" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "folder" of the space "Personal" should contain these files:
| renamed.txt |
But for user "Alice" the space "Personal" should not contain these entries:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: rename a file and move into a sub-folder inside personal space
Scenario: rename a file and move into a sub-folder inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has created folder "folder/sub-folder"
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "textfile.txt" into "/folder/sub-folder/renamed.txt" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" renames a file "textfile.txt" into "/folder/sub-folder/renamed.txt" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" folder "folder/sub-folder" of the space "Personal" should contain these files:
| renamed.txt |
But for user "Alice" the space "Personal" should not contain these entries:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: rename a file and move from a folder to root inside personal space
Scenario: rename a file and move from a folder to root inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has uploaded file with content "some data" to "folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "folder/textfile.txt" into "/renamed.txt" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" renames a file "folder/textfile.txt" into "/renamed.txt" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" the space "Personal" should contain these entries:
| renamed.txt |
But for user "Alice" folder "folder" of the space "Personal" should not contain these files:
| renamed.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: rename a file and move from sub-folder to root inside personal space
Scenario: rename a file and move from sub-folder to root inside personal space
Given user "Alice" has created folder "/folder"
And user "Alice" has created folder "folder/sub-folder"
And user "Alice" has uploaded file with content "some data" to "folder/sub-folder/textfile.txt"
And we save it into "FILEID"
When user "Alice" renames a file "folder/sub-folder/textfile.txt" into "/renamed.txt" inside space "Personal" using file-id path "<dav-path>"
When user "Alice" renames a file "folder/sub-folder/textfile.txt" into "/renamed.txt" inside space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Alice" the space "Personal" should contain these files:
| renamed.txt |
But for user "Alice" folder "folder/sub-folder" of the space "Personal" should not contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
@issue-7617
Scenario Outline: move a file to a different name into a sub-folder inside share space (editor permissions)
Scenario: move a file to a different name into a sub-folder inside share space (editor permissions)
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/folder"
And user "Alice" has created folder "/folder/sub-folder"
@@ -721,19 +601,15 @@ Feature: moving/renaming file using file id
| shareType | user |
| permissionsRole | Editor |
And user "Brian" has a share "folder" synced
When user "Brian" renames a file "Shares/folder/test.txt" into "folder/sub-folder/renamed.txt" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" renames a file "Shares/folder/test.txt" into "folder/sub-folder/renamed.txt" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "201"
And for user "Brian" folder "folder/sub-folder" of the space "Shares" should contain these files:
| renamed.txt |
But for user "Brian" folder "folder" of the space "Shares" should not contain these files:
| test.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
Scenario Outline: move a file to a different name into a sub-folder inside share space (read permissions)
Scenario: move a file to a different name into a sub-folder inside share space (read permissions)
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/folder"
And user "Alice" has created folder "/folder/sub-folder"
@@ -746,81 +622,63 @@ Feature: moving/renaming file using file id
| shareType | user |
| permissionsRole | Viewer |
And user "Brian" has a share "folder" synced
When user "Brian" renames a file "Shares/folder/test.txt" into "folder/sub-folder/renamed.txt" inside space "Shares" using file-id path "<dav-path>"
When user "Brian" renames a file "Shares/folder/test.txt" into "folder/sub-folder/renamed.txt" inside space "Shares" using file-id "<<FILEID>>"
Then the HTTP status code should be "502"
And for user "Brian" folder "folder" of the space "Shares" should contain these files:
| test.txt |
But for user "Brian" folder "folder/sub-folder" of the space "Shares" should not contain these files:
| renamed.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
@issue-6739
Scenario Outline: try to move personal file to other spaces using its id as the destination
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "myspace" with the default quota using the Graph API
And user "Alice" has uploaded file with content "some data" to "textfile.txt"
When user "Alice" tries to move file "textfile.txt" of space "Personal" to space "<space-name>" using its id in destination path "<dav-path>"
When user "Alice" tries to move file "textfile.txt" of space "Personal" to space "<space-name>" using its id in destination path
Then the HTTP status code should be "<http-status-code>"
And for user "Alice" the space "Personal" should contain these entries:
| textfile.txt |
Examples:
| dav-path | space-name | http-status-code |
| /remote.php/dav/spaces | Personal | 409 |
| /dav/spaces | Personal | 409 |
| /remote.php/dav/spaces | myspace | 400 |
| /dav/spaces | myspace | 400 |
| /remote.php/dav/spaces | Shares | 404 |
| /dav/spaces | Shares | 404 |
| space-name | http-status-code |
| Personal | 409 |
| myspace | 400 |
| Shares | 404 |
@issue-6739
Scenario Outline: try to move project file to other spaces using its id as the destination
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "myspace" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "myspace" with content "some data" to "textfile.txt"
When user "Alice" tries to move file "textfile.txt" of space "myspace" to space "<space-name>" using its id in destination path "<dav-path>"
When user "Alice" tries to move file "textfile.txt" of space "myspace" to space "<space-name>" using its id in destination path
Then the HTTP status code should be "<http-status-code>"
And for user "Alice" the space "myspace" should contain these entries:
| textfile.txt |
Examples:
| dav-path | space-name | http-status-code |
| /remote.php/dav/spaces | Personal | 400 |
| /dav/spaces | Personal | 400 |
| /remote.php/dav/spaces | myspace | 409 |
| /dav/spaces | myspace | 409 |
| /remote.php/dav/spaces | Shares | 404 |
| /dav/spaces | Shares | 404 |
| space-name | http-status-code |
| Personal | 400 |
| myspace | 409 |
| Shares | 404 |
@issue-6739
Scenario Outline: move a file to folder using its id as the destination (Personal space)
Scenario: move a file to folder using its id as the destination (Personal space)
Given user "Alice" has uploaded file with content "some data" to "textfile.txt"
And user "Alice" has created folder "docs"
When user "Alice" moves file "textfile.txt" of space "Personal" to folder "docs" using its id in destination path "<dav-path>"
When user "Alice" moves file "textfile.txt" of space "Personal" to folder "docs" using its id in destination path
Then the HTTP status code should be "204"
And the content of file "docs" for user "Alice" should be "some data"
And as "Alice" file "textfile.txt" should not exist
And as "Alice" folder "docs" should not exist
And as "Alice" folder "docs" should exist in the trashbin of the space "Personal"
Examples:
| dav-path |
| /remote.php/dav/spaces |
| /dav/spaces |
@issue-6739
Scenario Outline: move a file to folder using its id as the destination (Project space)
Scenario: move a file to folder using its id as the destination (Project space)
Given the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "myspace" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "myspace" with content "some data" to "textfile.txt"
And user "Alice" has created a folder "docs" in space "myspace"
When user "Alice" moves file "textfile.txt" of space "myspace" to folder "docs" using its id in destination path "<dav-path>"
When user "Alice" moves file "textfile.txt" of space "myspace" to folder "docs" using its id in destination path
Then the HTTP status code should be "204"
And for user "Alice" the content of the file "docs" of the space "myspace" should be "some data"
And as "Alice" folder "docs" should exist in the trashbin of the space "myspace"
And for user "Alice" folder "/" of the space "myspace" should not contain these files:
| textfile.txt |
Examples:
| dav-path |
| /remote.php/dav/spaces |
| /dav/spaces |

View File

@@ -18,9 +18,8 @@ Feature: propfind a file using file id
| oc:name | textfile.txt |
| oc:permissions | RDNVWZP |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: send a PROPFIND request to a file inside a folder of personal space
@@ -34,9 +33,8 @@ Feature: propfind a file using file id
| oc:name | textfile.txt |
| oc:permissions | RDNVWZP |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: send a PROPFIND request to a file in personal space owned by another user
@@ -46,9 +44,8 @@ Feature: propfind a file using file id
When user "Brian" sends HTTP method "PROPFIND" to URL "<dav-path>"
Then the HTTP status code should be "404"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: send a PROPFIND request to a file of inside project space
@@ -63,9 +60,8 @@ Feature: propfind a file using file id
| oc:name | textfile.txt |
| oc:permissions | RDNVWZP |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: send a PROPFIND request to a file inside a folder of project space
@@ -81,9 +77,8 @@ Feature: propfind a file using file id
| oc:name | textfile.txt |
| oc:permissions | RDNVWZP |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: send a PROPFIND request to a file inside project space owned by another user
@@ -95,9 +90,8 @@ Feature: propfind a file using file id
When user "Brian" sends HTTP method "PROPFIND" to URL "<dav-path>"
Then the HTTP status code should be "404"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: send a PROPFIND request to a shared file
@@ -118,9 +112,8 @@ Feature: propfind a file using file id
| oc:name | textfile.txt |
| oc:permissions | SNVW |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee sends a PROPFIND request to a file inside of a shared folder
@@ -142,6 +135,5 @@ Feature: propfind a file using file id
| oc:name | textfile.txt |
| oc:permissions | DNVW |
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |

View File

@@ -15,9 +15,8 @@ Feature: update files using file id
Then the HTTP status code should be "204"
And for user "Alice" the content of the file "/textfile.txt" of the space "Personal" should be "updated content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: update content of a file inside a folder
@@ -28,9 +27,8 @@ Feature: update files using file id
Then the HTTP status code should be "204"
And for user "Alice" the content of the file "/uploadFolder/textfile.txt" of the space "Personal" should be "updated content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: update content of a file inside a project space
@@ -42,9 +40,8 @@ Feature: update files using file id
Then the HTTP status code should be "204"
And for user "Alice" the content of the file "/textfile.txt" of the space "new-space" should be "updated content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee updates content of a shared file
@@ -63,9 +60,8 @@ Feature: update files using file id
And for user "Alice" the content of the file "/textfile.txt" of the space "Personal" should be "updated content"
And for user "Brian" the content of the file "textfile.txt" of the space "Shares" should be "updated content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee updates content of a file inside a shared folder
@@ -85,9 +81,8 @@ Feature: update files using file id
And for user "Alice" the content of the file "uploadFolder/textfile.txt" of the space "Personal" should be "updated content"
And for user "Brian" the content of the file "uploadFolder/textfile.txt" of the space "Shares" should be "updated content"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |
| dav-path |
| /dav/spaces/<<FILEID>> |
Scenario Outline: sharee with different role tries to update content of a file inside a shared space
@@ -106,9 +101,8 @@ Feature: update files using file id
And for user "Alice" the content of the file "/textfile.txt" of the space "new-space" should be "<file-content>"
And for user "Brian" the content of the file "/textfile.txt" of the space "new-space" should be "<file-content>"
Examples:
| dav-path | space-role | http-status-code | file-content |
| /remote.php/dav/spaces/<<FILEID>> | Space Viewer | 403 | some data |
| /dav/spaces/<<FILEID>> | Space Editor | 204 | updated content |
| dav-path | space-role | http-status-code | file-content |
| /dav/spaces/<<FILEID>> | Space Editor | 204 | updated content |
Scenario Outline: user tries to update content of a file owned by others
@@ -119,6 +113,5 @@ Feature: update files using file id
Then the HTTP status code should be "404"
And for user "Alice" the content of the file "/textfile.txt" of the space "Personal" should be "some data"
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spcaes/<<FILEID>> |
| dav-path |
| /dav/spcaes/<<FILEID>> |

View File

@@ -12,7 +12,7 @@ Feature: Public can download folders from project space public link
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "new-space" with the default quota using the Graph API
@env-config
@env-config @issue-9724 @issue-10331
Scenario: download a folder from public link of a space
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using SharingNG
@@ -28,7 +28,7 @@ Feature: Public can download folders from project space public link
| name | content |
| NewFolder/test.txt | some content |
@env-config @issue-5229
@env-config @issue-5229 @issue-9724 @issue-10331
Scenario: download a folder from public link of a folder inside a space
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using SharingNG

View File

@@ -16,7 +16,7 @@ Feature: Share spaces via link
And user "Alice" has created a space "share space" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "share space" with content "some content" to "test.txt"
@issue-9724 @issue-10331
Scenario Outline: manager can share a space to public via link with different permissions
When user "Alice" creates a public link share of the space "share space" with settings:
| permissions | <permissions> |
@@ -57,7 +57,7 @@ Feature: Share spaces via link
| permissions | 0 |
| share_type | public_link |
@issue-10331
Scenario: uploader should be able to upload a file
When user "Alice" creates a public link share of the space "share space" with settings:
| permissions | 4 |

View File

@@ -121,7 +121,7 @@ Feature: Share a file or folder that is inside a space via public link
| folder/file.txt | Space Editor |
| folder/file.txt | Space Viewer |
@issue-9724 @issue-10331
Scenario Outline: user creates a new public link share of a file inside the personal space with edit permissions
Given using OCS API version "<ocs-api-version>"
And user "Alice" has uploaded file with content "Random data" to "/file.txt"

View File

@@ -56,9 +56,9 @@ Feature: remove file versions via CLI command
When user "Alice" gets the number of versions of file "file.txt"
Then the HTTP status code should be "207"
And the number of versions should be "2"
When user "Alice" gets the number of versions of file "lorem.txt" using file-id path "/meta/<<LOREM_FILEID>>/v"
When user "Alice" gets the number of versions of file "lorem.txt" using file-id "<<LOREM_FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "0"
When user "Alice" gets the number of versions of file "epsum.txt" using file-id path "/meta/<<EPSUM_FILEID>>/v"
When user "Alice" gets the number of versions of file "epsum.txt" using file-id "<<EPSUM_FILEID>>"
Then the HTTP status code should be "207"
And the number of versions should be "0"

View File

@@ -10,9 +10,8 @@ Feature: reindex space via CLI command
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "new-space" with the default quota using the Graph API
And user "Alice" has uploaded a file inside space "new-space" with content "some data" to "textfile.txt"
And using new DAV path
@issue-10329
Scenario: reindex all spaces
When the administrator reindexes all spaces using the CLI
Then the command should be successful

View File

@@ -6,20 +6,22 @@ Feature: auth
Background:
Given user "Alice" has been created with default attributes and without skeleton files
@smokeTest
@smokeTest @issue-10334
Scenario Outline: using WebDAV anonymously
When a user requests "<dav-path>" with "PROPFIND" and no authentication
Then the HTTP status code should be "401"
Examples:
| dav-path |
| /remote.php/webdav |
| /webdav |
| /dav/files/%username% |
| /dav/spaces/%spaceid% |
@smokeTest
@smokeTest @issue-10334
Scenario Outline: using WebDAV with basic auth
When user "Alice" requests "<dav-path>" with "PROPFIND" using basic auth
Then the HTTP status code should be "207"
Examples:
| dav-path |
| /remote.php/webdav |
| /webdav |
| /dav/files/%username% |
| /dav/spaces/%spaceid% |

View File

@@ -17,109 +17,109 @@ Feature: COPY file/folder
@smokeTest
Scenario: send COPY requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "COPY" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send COPY requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "COPY" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-3882
Scenario: send COPY requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "COPY" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/textfile0.txt |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@issue-3882
Scenario: send COPY requests to another user's webDav endpoints as normal user using the spaces WebDAV API
Given using spaces DAV path
When user "Brian" requests these endpoints with "COPY" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send COPY requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "COPY" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send COPY requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "COPY" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send COPY requests to webDav endpoints without any authentication
When a user requests these endpoints with "COPY" with no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-4332 @issue-3882
Scenario: send COPY requests to webDav endpoints with body as normal user
When user "Alice" requests these endpoints with "COPY" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/webdav/PARENT/parent.txt |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /webdav/PARENT/parent.txt |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "415"
@issue-4332 @issue-3882
Scenario: send COPY requests to webDav endpoints with body as normal user using the spaces WebDAV API
When user "Alice" requests these endpoints with "COPY" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "415"

View File

@@ -17,109 +17,109 @@ Feature: delete file/folder
@smokeTest
Scenario: send DELETE requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "DELETE" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/webdav/PARENT/parent.txt |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /webdav/PARENT/parent.txt |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send DELETE requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "DELETE" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/webdav/PARENT/parent.txt |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /webdav/PARENT/parent.txt |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send DELETE requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "DELETE" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/textfile0.txt |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send DELETE requests to another user's webDav endpoints as normal user using the spaces WebDAV API
When user "Brian" requests these endpoints with "DELETE" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@smokeTest
Scenario: send DELETE requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "DELETE" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send DELETE requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "DELETE" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send DELETE requests to webDav endpoints without any authentication
When a user requests these endpoints with "DELETE" with no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-4332
Scenario: send DELETE requests to webDav endpoints with body as normal user
When user "Alice" requests these endpoints with "DELETE" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile1.txt |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/FOLDER |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile1.txt |
| /dav/files/%username%/PARENT/parent.txt |
| /webdav/PARENT |
| /dav/files/%username%/FOLDER |
Then the HTTP status code of responses on all endpoints should be "415"
@issue-4332
Scenario: send DELETE requests to webDav endpoints with body as normal user using the spaces WebDAV API
When user "Alice" requests these endpoints with "DELETE" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/PARENT |
Then the HTTP status code of responses on all endpoints should be "415"

View File

@@ -17,93 +17,93 @@ Feature: LOCK file/folder
@smokeTest
Scenario: send LOCK requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "LOCK" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send LOCK requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "LOCK" including body "doesnotmatter" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-1347 @issue-2176
Scenario: send LOCK requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "LOCK" to get property "d:shared" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/dav/files/%username%/PARENT |
| endpoint |
| /dav/files/%username%/textfile0.txt |
| /dav/files/%username%/PARENT |
Then the HTTP status code of responses on all endpoints should be "403"
When user "Brian" requests these endpoints with "LOCK" to get property "d:shared" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "409"
@issue-1347 @issue-2176
Scenario: send LOCK requests to another user's webDav endpoints as normal user using the spaces WebDAV API
When user "Brian" requests these endpoints with "LOCK" to get property "d:shared" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
Then the HTTP status code of responses on all endpoints should be "403"
When user "Brian" requests these endpoints with "LOCK" to get property "d:shared" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "409"
Scenario: send LOCK requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "LOCK" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send LOCK requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "LOCK" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send LOCK requests to webDav endpoints without any authentication
When a user requests these endpoints with "LOCK" with body "doesnotmatter" and no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"

View File

@@ -13,114 +13,114 @@ Feature: create folder using MKCOL
@smokeTest
Scenario: send MKCOL requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "MKCOL" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send MKCOL requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "MKCOL" including body "doesnotmatter" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-5049 @issue-1347 @issue-1292
Scenario: send MKCOL requests to another user's webDav endpoints as normal user
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" requests these endpoints with "MKCOL" including body "" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/does-not-exist |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/textfile0.txt |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/does-not-exist |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@issue-5049 @issue-1347 @issue-1292
Scenario: send MKCOL requests to non-existent user's webDav endpoints as normal user
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" requests these endpoints with "MKCOL" including body "" about user "non-existent-user"
| endpoint |
| /remote.php/dav/files/non-existent-user/textfile0.txt |
| /remote.php/dav/files/non-existent-user/PARENT |
| /remote.php/dav/files/non-existent-user/does-not-exist |
| /remote.php/dav/files/non-existent-user/PARENT/parent.txt |
| endpoint |
| /dav/files/non-existent-user/textfile0.txt |
| /dav/files/non-existent-user/PARENT |
| /dav/files/non-existent-user/does-not-exist |
| /dav/files/non-existent-user/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@issue-1347 @issue-1292
Scenario: send MKCOL requests to another user's webDav endpoints as normal user using the spaces WebDAV API
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" requests these endpoints with "MKCOL" including body "" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/does-not-exist |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/does-not-exist |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@issue-5049 @issue-1347 @issue-1292
Scenario: send MKCOL requests to non-existent user's webDav endpoints as normal user using the spaces WebDAV API
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" requests these endpoints with "MKCOL" including body "" about user "non-existent-user"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/does-not-exist |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/does-not-exist |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send MKCOL requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "MKCOL" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send MKCOL requests to webDav endpoints using valid password and username of different user
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" requests these endpoints with "MKCOL" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send MKCOL requests to webDav endpoints without any authentication
When a user requests these endpoints with "MKCOL" with body "doesnotmatter" and no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"

View File

@@ -17,109 +17,109 @@ Feature: MOVE file/folder
@smokeTest
Scenario: send MOVE requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "MOVE" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send MOVE requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "MOVE" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-3882
Scenario: send MOVE requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "MOVE" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/textfile0.txt |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@issue-3882
Scenario: send MOVE requests to another user's webDav endpoints as normal user using the spaces WebDAV API
Given using spaces DAV path
When user "Brian" requests these endpoints with "MOVE" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send MOVE requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "MOVE" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send MOVE requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "MOVE" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send MOVE requests to webDav endpoints without any authentication
When a user requests these endpoints with "MOVE" with no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-4332 @issue-3882
Scenario: send MOVE requests to webDav endpoints with body as normal user
When user "Alice" requests these endpoints with "MOVE" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/webdav/PARENT/parent.txt |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /webdav/PARENT/parent.txt |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "415"
@issue-4332 @issue-3882
Scenario: send MOVE requests to webDav endpoints with body as normal user using the spaces WebDAV API
When user "Alice" requests these endpoints with "MOVE" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "415"

View File

@@ -17,87 +17,87 @@ Feature: POST file/folder
@smokeTest
Scenario: send POST requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "POST" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send POST requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "POST" including body "doesnotmatter" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-1287
Scenario: send POST requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "POST" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile1.txt |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/textfile1.txt |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "412"
@issue-1287
Scenario: send POST requests to another user's webDav endpoints as normal user using the spaces WebDAV API
When user "Brian" requests these endpoints with "POST" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "412"
Scenario: send POST requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "POST" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send POST requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "POST" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send POST requests to webDav endpoints without any authentication
When a user requests these endpoints with "POST" with body "doesnotmatter" and no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"

View File

@@ -16,87 +16,87 @@ Feature: PROPFIND file/folder
@smokeTest
Scenario: send PROPFIND requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "PROPFIND" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send PROPFIND requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "PROPFIND" including body "doesnotmatter" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-1347
Scenario: send PROPFIND requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "PROPFIND" to get property "d:getetag" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/textfile0.txt |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@issue-1347
Scenario: send PROPFIND requests to another user's webDav endpoints as normal user using the spaces WebDAV API
When user "Brian" requests these endpoints with "PROPFIND" to get property "d:getetag" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send PROPFIND requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "PROPFIND" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send PROPFIND requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "PROPFIND" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send PROPFIND requests to webDav endpoints without any authentication
When a user requests these endpoints with "PROPFIND" with body "doesnotmatter" and no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"

View File

@@ -17,87 +17,87 @@ Feature: PROPPATCH file/folder
@smokeTest
Scenario: send PROPPATCH requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "PROPPATCH" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send PROPPATCH requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "PROPPATCH" including body "doesnotmatter" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@issue-1347 @issue-1292
Scenario: send PROPPATCH requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "PROPPATCH" to set property "favorite" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/textfile0.txt |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@issue-1347 @issue-1292
Scenario: send PROPPATCH requests to another user's webDav endpoints as normal user using the spaces WebDAV API
When user "Brian" requests these endpoints with "PROPPATCH" to set property "favorite" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send PROPPATCH requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "PROPPATCH" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send PROPPATCH requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "PROPPATCH" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send PROPPATCH requests to webDav endpoints without any authentication
When a user requests these endpoints with "PROPPATCH" with body "doesnotmatter" and no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"

View File

@@ -17,93 +17,93 @@ Feature: PUT file/folder
@smokeTest
Scenario: send PUT requests to webDav endpoints as normal user with wrong password
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send PUT requests to webDav endpoints as normal user with no password
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "" about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send PUT requests to another user's webDav endpoints as normal user
When user "Brian" requests these endpoints with "PUT" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/textfile1.txt |
| /remote.php/dav/files/%username%/PARENT |
| endpoint |
| /dav/files/%username%/textfile1.txt |
| /dav/files/%username%/PARENT |
Then the HTTP status code of responses on all endpoints should be "404"
When user "Brian" requests these endpoints with "PUT" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| endpoint |
| /dav/files/%username%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send PUT requests to another user's webDav endpoints as normal user using the spaces WebDAV API
When user "Brian" requests these endpoints with "PUT" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| endpoint |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
Then the HTTP status code of responses on all endpoints should be "404"
When user "Brian" requests these endpoints with "PUT" including body "doesnotmatter" about user "Alice"
| endpoint |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "404"
Scenario: send PUT requests to webDav endpoints using invalid username but correct password
When user "usero" requests these endpoints with "PUT" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
Scenario: send PUT requests to webDav endpoints using valid password and username of different user
When user "Brian" requests these endpoints with "PUT" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"
@smokeTest
Scenario: send PUT requests to webDav endpoints without any authentication
When a user requests these endpoints with "PUT" with body "doesnotmatter" and no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/textfile0.txt |
| /remote.php/dav/files/%username%/textfile0.txt |
| /remote.php/webdav/PARENT |
| /remote.php/dav/files/%username%/PARENT |
| /remote.php/dav/files/%username%/PARENT/parent.txt |
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php/dav/spaces/%spaceid%/PARENT |
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
| endpoint |
| /webdav/textfile0.txt |
| /dav/files/%username%/textfile0.txt |
| /webdav/PARENT |
| /dav/files/%username%/PARENT |
| /dav/files/%username%/PARENT/parent.txt |
| /dav/spaces/%spaceid%/textfile0.txt |
| /dav/spaces/%spaceid%/PARENT |
| /dav/spaces/%spaceid%/PARENT/parent.txt |
Then the HTTP status code of responses on all endpoints should be "401"

View File

@@ -14,192 +14,192 @@ Feature: make webdav request with special urls
Scenario: send DELETE requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "DELETE" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/webdav/textfile0.txt |
| //remote.php//dav/files/%username%/textfile1.txt |
| /remote.php//dav/files/%username%/PARENT/parent.txt |
| /remote.php//webdav/PARENT |
| //remote.php/dav//files/%username%//FOLDER |
| endpoint |
| //webdav/textfile0.txt |
| //dav//files/%username%/textfile1.txt |
| /dav//files/%username%/PARENT/parent.txt |
| /webdav//PARENT |
| //dav/files/%username%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,200,204,204,200" on oCIS or "204,204,204,204,204" on reva
Scenario: send DELETE requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "DELETE" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/dav/spaces/%spaceid%/textfile0.txt |
| //remote.php//dav/spaces/%spaceid%/PARENT/parent.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT |
| //remote.php/dav//spaces/%spaceid%//FOLDER |
| endpoint |
| //dav/spaces/%spaceid%/textfile0.txt |
| //dav//spaces/%spaceid%/PARENT/parent.txt |
| /dav//spaces/%spaceid%/PARENT |
| //dav/spaces/%spaceid%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,200,204,200" on oCIS or "204,204,204,204" on reva
Scenario: send GET requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "GET" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/webdav/textfile0.txt |
| //remote.php//dav/files/%username%/textfile1.txt |
| /remote.php//dav/files/%username%/PARENT/parent.txt |
| /remote.php//webdav/PARENT |
| //remote.php/dav//files/%username%//FOLDER |
| endpoint |
| //webdav/textfile0.txt |
| //dav//files/%username%/textfile1.txt |
| /dav//files/%username%/PARENT/parent.txt |
| //webdav/PARENT |
| //dav/files/%username%//FOLDER |
Then the HTTP status code of responses on all endpoints should be "200"
Scenario: send GET requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "GET" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/dav/spaces/%spaceid%/textfile0.txt |
| //remote.php//dav/spaces/%spaceid%/PARENT/parent.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT |
| //remote.php/dav//spaces/%spaceid%//FOLDER |
| endpoint |
| //dav/spaces/%spaceid%/textfile0.txt |
| //dav//spaces/%spaceid%/PARENT/parent.txt |
| /dav//spaces/%spaceid%/PARENT |
| //dav/spaces/%spaceid%//FOLDER |
Then the HTTP status code of responses on all endpoints should be "200"
Scenario: send LOCK requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "LOCK" to get property "d:shared" about user "Alice"
| endpoint |
| //remote.php/webdav/textfile0.txt |
| //remote.php//dav/files/%username%/textfile1.txt |
| /remote.php//dav/files/%username%/PARENT/parent.txt |
| /remote.php//webdav/PARENT |
| //remote.php/dav//files/%username%//FOLDER |
| endpoint |
| //webdav/textfile0.txt |
| //dav//files/%username%/textfile1.txt |
| /dav//files/%username%/PARENT/parent.txt |
| //webdav/PARENT |
| //dav/files/%username%//FOLDER |
Then the HTTP status code of responses on all endpoints should be "200"
Scenario: send LOCK requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "LOCK" to get property "d:shared" about user "Alice"
| endpoint |
| //remote.php/dav/spaces/%spaceid%/textfile0.txt |
| //remote.php//dav/spaces/%spaceid%/PARENT/parent.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT |
| //remote.php/dav//spaces/%spaceid%//FOLDER |
| endpoint |
| //dav/spaces/%spaceid%/textfile0.txt |
| //dav//spaces/%spaceid%/PARENT/parent.txt |
| /dav//spaces/%spaceid%/PARENT |
| //dav/spaces/%spaceid%//FOLDER |
Then the HTTP status code of responses on all endpoints should be "200"
Scenario: send MKCOL requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "MKCOL" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/webdav/PARENT1 |
| /remote.php//webdav/PARENT2 |
| //remote.php//webdav/PARENT3 |
| //remote.php/dav//files/%username%/PARENT4 |
| /remote.php/dav/files/%username%//PARENT5 |
| /remote.php/dav//files/%username%/PARENT6 |
| endpoint |
| //webdav/PARENT1 |
| /webdav//PARENT2 |
| //webdav//PARENT3 |
| //dav//files/%username%/PARENT4 |
| /dav/files/%username%//PARENT5 |
| /dav//files/%username%/PARENT6 |
Then the HTTP status code of responses on each endpoint should be "200,201,200,200,201,201" on oCIS or "201,201,201,201,201,201" on reva
Scenario: send MKCOL requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "MKCOL" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/dav/spaces/%spaceid%/PARENT1 |
| /remote.php//dav/spaces/%spaceid%/PARENT2 |
| //remote.php//dav/spaces/%spaceid%/PARENT3 |
| //remote.php/dav//spaces/%spaceid%/PARENT4 |
| /remote.php/dav/spaces/%spaceid%//PARENT5 |
| /remote.php/dav//spaces/%spaceid%/PARENT6 |
| endpoint |
| //dav/spaces/%spaceid%/PARENT1 |
| /dav//spaces/%spaceid%/PARENT2 |
| //dav//spaces/%spaceid%/PARENT3 |
| //dav/spaces//%spaceid%/PARENT4 |
| /dav/spaces/%spaceid%//PARENT5 |
| /dav//spaces/%spaceid%/PARENT6 |
Then the HTTP status code of responses on each endpoint should be "200,201,200,200,201,201" on oCIS or "201,201,201,201,201,201" on reva
Scenario: send MOVE requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "MOVE" using password "%regular%" about user "Alice"
| endpoint | destination |
| //remote.php/webdav/textfile0.txt | /remote.php/webdav/textfileZero.txt |
| /remote.php//dav/files/%username%/textfile1.txt | /remote.php/dav/files/%username%/textfileOne.txt |
| /remote.php/webdav//PARENT | /remote.php/webdav/PARENT1 |
| //remote.php/dav/files/%username%//PARENT1 | /remote.php/dav/files/%username%/PARENT2 |
| /remote.php/dav//files/%username%/PARENT2/parent.txt | /remote.php/dav/files/%username%/PARENT2/parent1.txt |
| endpoint | destination |
| //webdav/textfile0.txt | /webdav/textfileZero.txt |
| /dav//files/%username%/textfile1.txt | /dav/files/%username%/textfileOne.txt |
| /webdav//PARENT | /webdav/PARENT1 |
| //dav/files//%username%//PARENT1 | /dav/files/%username%/PARENT2 |
| /dav//files/%username%/PARENT2/parent.txt | /dav/files/%username%/PARENT2/parent1.txt |
Then the HTTP status code of responses on each endpoint should be "200,201,201,200,404" on oCIS or "201,201,201,201,201" on reva
Scenario: send MOVE requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "MOVE" using password "%regular%" about user "Alice"
| endpoint | destination |
| /remote.php//dav/spaces/%spaceid%/textfile1.txt | /remote.php/dav/spaces/%spaceid%/textfileOne.txt |
| /remote.php/dav//spaces/%spaceid%/PARENT | /remote.php/dav/spaces/%spaceid%/PARENT1 |
| //remote.php/dav/spaces/%spaceid%//PARENT1 | /remote.php/dav/spaces/%spaceid%/PARENT2 |
| //remote.php/dav/spaces/%spaceid%/PARENT2/parent.txt | /remote.php/dav/spaces/%spaceid%/PARENT2/parent1.txt |
| endpoint | destination |
| /dav//spaces/%spaceid%/textfile1.txt | /dav/spaces/%spaceid%/textfileOne.txt |
| /dav/spaces/%spaceid%//PARENT | /dav/spaces/%spaceid%/PARENT1 |
| //dav/spaces/%spaceid%//PARENT1 | /dav/spaces/%spaceid%/PARENT2 |
| //dav/spaces/%spaceid%/PARENT2/parent.txt | /dav/spaces/%spaceid%/PARENT2/parent1.txt |
Then the HTTP status code of responses on each endpoint should be "201,201,200,200" on oCIS or "201,201,201,201" on reva
Scenario: send POST requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "POST" including body "doesnotmatter" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/webdav/textfile0.txt |
| //remote.php//dav/files/%username%/textfile1.txt |
| /remote.php//dav/files/%username%/PARENT/parent.txt |
| /remote.php//webdav/PARENT |
| //remote.php/dav//files/%username%//FOLDER |
| endpoint |
| //webdav/textfile0.txt |
| //dav//files/%username%/textfile1.txt |
| /dav//files/%username%/PARENT/parent.txt |
| /webdav//PARENT |
| //dav/files//%username%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,200,412,412,200" respectively
Scenario: send POST requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "POST" including body "doesnotmatter" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php//dav/spaces/%spaceid%/textfile1.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT/parent.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT |
| //remote.php/dav//spaces/%spaceid%//FOLDER |
| endpoint |
| //dav//spaces/%spaceid%/textfile1.txt |
| /dav//spaces/%spaceid%/PARENT/parent.txt |
| /dav//spaces/%spaceid%/PARENT |
| //dav//spaces/%spaceid%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,412,412,200" respectively
Scenario: send PROPFIND requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "PROPFIND" to get property "d:href" about user "Alice"
| endpoint |
| //remote.php/webdav/textfile0.txt |
| //remote.php//dav/files/%username%/textfile1.txt |
| /remote.php//dav/files/%username%/PARENT/parent.txt |
| /remote.php//webdav/PARENT |
| //remote.php/dav//files/%username%//FOLDER |
| endpoint |
| //webdav/textfile0.txt |
| //dav//files/%username%/textfile1.txt |
| /dav//files/%username%/PARENT/parent.txt |
| /webdav//PARENT |
| //dav/files//%username%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,200,207,207,200" on oCIS or "207,207,207,207,207" on reva
Scenario: send PROPFIND requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "PROPFIND" to get property "d:href" about user "Alice"
| endpoint |
| //remote.php//dav/spaces/%spaceid%/textfile1.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT/parent.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT |
| //remote.php/dav//spaces/%spaceid%//FOLDER |
| endpoint |
| //dav//spaces/%spaceid%/textfile1.txt |
| /dav//spaces/%spaceid%/PARENT/parent.txt |
| /dav//spaces/%spaceid%/PARENT |
| //dav/spaces//%spaceid%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,207,207,200" on oCIS or "207,207,207,207" on reva
Scenario: send PROPPATCH requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "PROPPATCH" to set property "d:getlastmodified" about user "Alice"
| endpoint |
| //remote.php/webdav/textfile0.txt |
| //remote.php//dav/files/%username%/textfile1.txt |
| /remote.php//dav/files/%username%/PARENT/parent.txt |
| /remote.php//webdav/PARENT |
| //remote.php/dav//files/%username%//FOLDER |
| endpoint |
| //webdav/textfile0.txt |
| //dav//files/%username%/textfile1.txt |
| /dav//files/%username%/PARENT/parent.txt |
| /webdav//PARENT |
| //dav//files/%username%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,200,400,400,200" respectively
Scenario: send PROPPATCH requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "PROPPATCH" to set property "d:getlastmodified" about user "Alice"
| endpoint |
| //remote.php//dav/spaces/%spaceid%/textfile1.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT/parent.txt |
| /remote.php//dav/spaces/%spaceid%/PARENT |
| //remote.php/dav//spaces/%spaceid%//FOLDER |
| endpoint |
| //dav//spaces/%spaceid%/textfile1.txt |
| /dav//spaces/%spaceid%/PARENT/parent.txt |
| /dav//spaces/%spaceid%/PARENT |
| //dav/spaces//%spaceid%//FOLDER |
Then the HTTP status code of responses on each endpoint should be "200,400,400,200" respectively
Scenario: send PUT requests to webDav endpoints with 2 slashes
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/webdav/textfile0.txt |
| /remote.php//webdav/textfile1.txt |
| //remote.php//dav/files/%username%/textfile1.txt |
| /remote.php/dav/files/%username%/textfile7.txt |
| //remote.php/dav/files/%username%/PARENT//parent.txt |
| endpoint |
| //webdav/textfile0.txt |
| /webdav//textfile1.txt |
| //dav//files/%username%/textfile1.txt |
| /dav/files//%username%/textfile7.txt |
| //dav//files/%username%/PARENT//parent.txt |
Then the HTTP status code of responses on each endpoint should be "200,204,200,201,200" on oCIS or "204,204,204,201,204" on reva
Scenario: send PUT requests to webDav endpoints with 2 slashes using the spaces WebDAV API
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "%regular%" about user "Alice"
| endpoint |
| //remote.php/dav/spaces/%spaceid%/textfile0.txt |
| /remote.php//dav/spaces/%spaceid%/textfile1.txt |
| //remote.php//dav/spaces/%spaceid%/textfile1.txt |
| /remote.php/dav/spaces/%spaceid%/textfile7.txt |
| //remote.php/dav/spaces/%spaceid%/PARENT//parent.txt |
| endpoint |
| //dav/spaces/%spaceid%/textfile0.txt |
| /dav//spaces/%spaceid%/textfile1.txt |
| //dav//spaces/%spaceid%/textfile1.txt |
| /dav/spaces//%spaceid%/textfile7.txt |
| //dav/spaces//%spaceid%/PARENT//parent.txt |
Then the HTTP status code of responses on each endpoint should be "200,204,200,201,200" on oCIS or "204,204,204,201,204" on reva

View File

@@ -251,7 +251,7 @@ Feature: sharing
When user "Alice" deletes the last share using the sharing API
Then the OCS status code should be "<ocs-status-code>"
And the HTTP status code should be "200"
When user "Brian" requests "/remote.php/dav/files/%username%" with "PROPFIND" using basic auth
When user "Brian" requests "/dav/files/%username%" with "PROPFIND" using basic auth
Then the HTTP status code should be "207"
Examples:
| ocs-api-version | ocs-status-code |

View File

@@ -9,7 +9,7 @@ Feature: sharing
| Brian |
| Carol |
@issue-8242
@issue-8242 @issue-10334
Scenario Outline: sharer renames the shared item (old/new webdav)
Given user "Alice" has uploaded file with content "foo" to "sharefile.txt"
And using <dav-path-version> DAV path
@@ -45,10 +45,9 @@ Feature: sharing
And as user "Carol" the value of the item "//oc:name" of path "<dav-path>/Shares/sharefile.txt" in the response should be "sharefile.txt"
And as user "Carol" the value of the item "//d:displayname" of path "<dav-path>/Shares/sharefile.txt" in the response should be "sharefile.txt"
Examples:
| dav-path-version | dav-path |
| old | /remote.php/webdav |
| new | /remote.php/dav/files/%username% |
| new | /dav/files/%username% |
| dav-path-version | dav-path |
| old | /webdav |
| new | /dav/files/%username% |
@issue-8242
Scenario Outline: sharer renames the shared item (spaces webdav)
@@ -86,11 +85,10 @@ Feature: sharing
And as user "Carol" the value of the item "//oc:name" of path "<dav-path>/sharefile.txt" in the response should be "sharefile.txt"
And as user "Carol" the value of the item "//d:displayname" of path "<dav-path>/sharefile.txt" in the response should be "sharefile.txt"
Examples:
| dav-path | dav-path-personal |
| /remote.php/dav/spaces/%shares_drive_id% | /remote.php/dav/spaces/%spaceid% |
| /dav/spaces/%shares_drive_id% | /remote.php/dav/spaces/%spaceid% |
| dav-path | dav-path-personal |
| /dav/spaces/%shares_drive_id% | /dav/spaces/%spaceid% |
@issue-8242
@issue-8242 @issue-10334
Scenario Outline: share receiver renames the shared item (old/new webdav)
Given user "Alice" has uploaded file with content "foo" to "/sharefile.txt"
And using <dav-path-version> DAV path
@@ -126,13 +124,11 @@ Feature: sharing
And as user "Brian" the value of the item "//oc:name" of path "<dav-path>/Shares/sharefile.txt" in the response should be "sharefile.txt"
And as user "Brian" the value of the item "//d:displayname" of path "<dav-path>/Shares/sharefile.txt" in the response should be "sharefile.txt"
Examples:
| dav-path-version | dav-path | permissions-role |
| old | /remote.php/webdav | Viewer |
| new | /remote.php/dav/files/%username% | Viewer |
| new | /dav/files/%username% | Viewer |
| old | /remote.php/webdav | Secure viewer |
| new | /remote.php/dav/files/%username% | Secure viewer |
| new | /dav/files/%username% | Secure viewer |
| dav-path-version | dav-path | permissions-role |
| old | /webdav | Viewer |
| old | /webdav | Secure viewer |
| new | /dav/files/%username% | Viewer |
| new | /dav/files/%username% | Secure viewer |
@issue-8242
Scenario Outline: share receiver renames the shared item (spaces webdav)
@@ -170,11 +166,9 @@ Feature: sharing
And as user "Brian" the value of the item "//oc:name" of path "<dav-path>/sharefile.txt" in the response should be "sharefile.txt"
And as user "Brian" the value of the item "//d:displayname" of path "<dav-path>/sharefile.txt" in the response should be "sharefile.txt"
Examples:
| dav-path | dav-path-personal | permissions-role |
| /remote.php/dav/spaces/%shares_drive_id% | /remote.php/dav/spaces/%spaceid% | Viewer |
| /dav/spaces/%shares_drive_id% | /remote.php/dav/spaces/%spaceid% | Viewer |
| /remote.php/dav/spaces/%shares_drive_id% | /remote.php/dav/spaces/%spaceid% | Secure viewer |
| /dav/spaces/%shares_drive_id% | /remote.php/dav/spaces/%spaceid% | Secure viewer |
| dav-path | dav-path-personal | permissions-role |
| /dav/spaces/%shares_drive_id% | /dav/spaces/%spaceid% | Viewer |
| /dav/spaces/%shares_drive_id% | /dav/spaces/%spaceid% | Secure viewer |
Scenario: keep group share when the one user renames the share and the user is deleted

View File

@@ -21,7 +21,7 @@ Feature: accessing a public link share
When the public accesses the preview of file "testavatar.jpg" from the last shared public link using the sharing API
Then the HTTP status code should be "404"
@env-config
@env-config @issue-10341
Scenario: access to the preview of public shared file without password
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And user "Alice" has uploaded file "filesForUpload/testavatar.jpg" to "testavatar.jpg"
@@ -50,7 +50,7 @@ Feature: accessing a public link share
| textfile0.txt |
Then the HTTP status code of responses on all endpoints should be "404"
@env-config
@env-config @issue-10341
Scenario: access to the preview of public shared file inside a folder without password
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And user "Alice" has created folder "FOLDER"

View File

@@ -11,7 +11,7 @@ Feature: changing a public link share
And user "Alice" has created folder "PARENT"
And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "PARENT/parent.txt"
@issue-10331
Scenario Outline: public can or cannot delete file through publicly shared link depending on having delete permissions using the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -29,7 +29,7 @@ Feature: changing a public link share
| createOnly | 403 | should |
| edit | 204 | should not |
@issue-10331
Scenario: public link share permissions work correctly for renaming and share permissions edit using the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -42,7 +42,7 @@ Feature: changing a public link share
And as "Alice" file "/PARENT/parent.txt" should not exist
And as "Alice" file "/PARENT/newparent.txt" should exist
@issue-10331
Scenario: public link share permissions work correctly for upload with share permissions edit with the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -66,7 +66,7 @@ Feature: changing a public link share
Then the HTTP status code should be "401"
And as "Alice" file "PARENT/parent.txt" should exist
@issue-10331
Scenario: public can delete file through publicly shared link with password using the valid password with the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -91,7 +91,7 @@ Feature: changing a public link share
And as "Alice" file "/PARENT/newparent.txt" should not exist
And as "Alice" file "/PARENT/parent.txt" should exist
@issue-10331
Scenario: public tries to rename a file in a password protected share using the valid password with the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -116,7 +116,7 @@ Feature: changing a public link share
Then the HTTP status code should be "401"
And as "Alice" file "/PARENT/lorem.txt" should not exist
@issue-10331
Scenario: public tries to upload to a password protected public share using the valid password with the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -128,7 +128,7 @@ Feature: changing a public link share
Then the HTTP status code should be "201"
And as "Alice" file "/PARENT/lorem.txt" should exist
@issue-10331
Scenario: public cannot rename a file in upload-write-only public link share with the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -141,7 +141,7 @@ Feature: changing a public link share
And as "Alice" file "/PARENT/parent.txt" should exist
And as "Alice" file "/PARENT/newparent.txt" should not exist
@issue-10331
Scenario: public cannot delete a file in upload-write-only public link share with the public WebDAV API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -196,7 +196,7 @@ Feature: changing a public link share
| 1 | 200 |
| 2 | 403 |
@issue-9724 @issue-10331
Scenario Outline: administrator removes password of a read-only public link
Given using OCS API version "<ocs-api-version>"
And admin has created folder "/PARENT"

View File

@@ -26,7 +26,7 @@ Feature: create a public link share
| 1 | 200 |
| 2 | 400 |
@smokeTest
@smokeTest @issue-10331 @issue-9724
Scenario Outline: creating a new public link share of a file with password using the new public WebDAV API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has uploaded file with content "Random data" to "/randomfile.txt"
@@ -59,7 +59,7 @@ Feature: create a public link share
| 1 | 100 |
| 2 | 200 |
@issue-10331 @issue-9724
Scenario Outline: create a new public link share of a file with edit permissions
Given using OCS API version "<ocs-api-version>"
And user "Alice" has uploaded file with content "Random data" to "/randomfile.txt"
@@ -88,7 +88,7 @@ Feature: create a public link share
| 1 | 100 |
| 2 | 200 |
@issue-10331 @issue-9724
Scenario Outline: creating a new public link share of a folder, with a password and accessing using the public WebDAV API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has created folder "/PARENT"
@@ -189,7 +189,7 @@ Feature: create a public link share
| 1 | 100 |
| 2 | 200 |
@issue-10331 @issue-9724
Scenario Outline: creating a link share with edit permissions keeps it using the public WebDAV API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has created folder "/afolder"
@@ -209,7 +209,7 @@ Feature: create a public link share
| 1 | 100 |
| 2 | 200 |
@issue-10331 @issue-9724
Scenario Outline: creating a link share with upload permissions keeps it using the public WebDAV API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has created folder "/afolder"
@@ -242,7 +242,7 @@ Feature: create a public link share
| 1 | 200 |
| 2 | 400 |
@issue-10331 @issue-9724
Scenario Outline: user creates a public link share of a file with file name longer than 64 chars using the public WebDAV API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has uploaded file with content "long file" to "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog.txt"
@@ -257,7 +257,7 @@ Feature: create a public link share
| 1 | 100 |
| 2 | 200 |
@issue-9724 @issue-10331
Scenario Outline: user creates a public link share of a folder with folder name longer than 64 chars and access using the public WebDAV API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has created folder "/aquickbrownfoxjumpsoveraverylazydogaquickbrownfoxjumpsoveralazydog"
@@ -267,13 +267,13 @@ Feature: create a public link share
| password | %public% |
Then the OCS status code should be "<ocs-status-code>"
And the HTTP status code should be "200"
And the public should be able to download file "/randomfile.txt" from inside the last public link shared folder using the old public WebDAV API with password "%public%" and the content should be "Random data"
And the public should be able to download file "/randomfile.txt" from inside the last public link shared folder using the new public WebDAV API with password "%public%" and the content should be "Random data"
Examples:
| ocs-api-version | ocs-status-code |
| 1 | 100 |
| 2 | 200 |
@issue-1293 @skipOnReva
@issue-1293 @skipOnReva @issue-10331 @issue-9724
Scenario: delete a folder that has been publicly shared and try to access using the public WebDAV API
Given user "Alice" has created folder "PARENT"
And user "Alice" has uploaded file with content "Random data" to "/PARENT/parent.txt"
@@ -287,7 +287,7 @@ Feature: create a public link share
And the public tries to download file "/parent.txt" from inside the last public link shared folder with password "%public%" using the new public WebDAV API
Then the HTTP status code should be "404"
@issue-1269 @issue-1293 @skipOnReva
@issue-1269 @issue-1293 @skipOnReva @issue-10331 @issue-9724
Scenario: try to download from a public share that has upload only permissions using the public webdav api
Given user "Alice" has created folder "PARENT"
And user "Alice" has uploaded file with content "Random data" to "/PARENT/parent.txt"
@@ -300,7 +300,7 @@ Feature: create a public link share
When the public tries to download file "/parent.txt" from inside the last public link shared folder with password "%public%" using the new public WebDAV API
Then the HTTP status code should be "403"
@env-config @skipOnReva
@env-config @skipOnReva @issue-10331 @issue-10071
Scenario: get the size of a file shared by public link
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And user "Alice" has uploaded file with content "This is a test file" to "test-file.txt"
@@ -313,7 +313,7 @@ Feature: create a public link share
Then the HTTP status code should be "207"
And the size of the file should be "19"
@env-config
@env-config @issue-10331 @issue-10071
Scenario Outline: get the mtime of a file shared by public link
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using <dav-path-version> DAV path
@@ -328,7 +328,7 @@ Feature: create a public link share
| old |
| new |
@env-config
@env-config @issue-10331 @issue-10071
Scenario Outline: get the mtime of a file inside a folder shared by public link
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using <dav-path-version> DAV path
@@ -344,7 +344,7 @@ Feature: create a public link share
| old |
| new |
@env-config @skipOnReva
@env-config @skipOnReva @issue-10331 @issue-10071
Scenario: get the mtime of a file inside a folder shared by public link using new webDAV version
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And user "Alice" has created folder "testFolder"
@@ -359,7 +359,7 @@ Feature: create a public link share
And as "Alice" the mtime of the file "testFolder/file.txt" should be "Thu, 08 Aug 2019 04:18:13 GMT"
And the mtime of file "file.txt" in the last shared public link using the WebDAV API should be "Thu, 08 Aug 2019 04:18:13 GMT"
@env-config
@env-config @issue-10331 @issue-10071
Scenario: overwriting a file changes its mtime (new public webDAV API)
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And user "Alice" has created folder "testFolder"
@@ -373,7 +373,7 @@ Feature: create a public link share
And as "Alice" the mtime of the file "testFolder/file.txt" should be "Thu, 08 Aug 2019 04:18:13 GMT"
And the mtime of file "file.txt" in the last shared public link using the WebDAV API should be "Thu, 08 Aug 2019 04:18:13 GMT"
@env-config @skipOnReva
@env-config @skipOnReva @issue-10331 @issue-10071
Scenario: check the href of a public link file
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using new DAV path
@@ -385,12 +385,12 @@ Feature: create a public link share
| permissionsRole | view |
When the public lists the resources in the last created public link with depth "1" using the WebDAV API
Then the HTTP status code should be "207"
And the value of the item "//d:response[2]//d:href" in the response should match "/%base_path%\/remote.php\/dav\/public-files\/%public_token%\/file.txt$/"
And the value of the item "//d:response[2]//d:href" in the response should match "/\/dav\/public-files\/%public_token%\/file.txt$/"
When the public gets the following properties of entry "/file.txt" in the last created public link using the WebDAV API
| propertyName |
| d:href |
Then the HTTP status code should be "207"
And the value of the item "//d:href" in the response should match "/%base_path%\/remote.php\/dav\/public-files\/%public_token%\/file.txt$/"
And the value of the item "//d:href" in the response should match "/\/dav\/public-files\/%public_token%\/file.txt$/"
@issue-6929 @@skipOnReva
Scenario Outline: create a password-protected public link on a file with the name same to the previously deleted one

View File

@@ -9,7 +9,7 @@ Feature: copying from public link share
And user "Alice" has created folder "/PARENT"
And the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
@issue-10331
Scenario: copy file within a public link folder new public WebDAV API
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And using SharingNG
@@ -24,7 +24,7 @@ Feature: copying from public link share
And the content of file "/PARENT/testfile.txt" for user "Alice" should be "some data"
And the content of file "/PARENT/copy1.txt" for user "Alice" should be "some data"
@issue-10331
Scenario: copy folder within a public link folder new public WebDAV API
Given user "Alice" has created folder "/PARENT/testFolder"
And user "Alice" has uploaded file with content "some data" to "/PARENT/testFolder/testfile.txt"
@@ -40,7 +40,7 @@ Feature: copying from public link share
And the content of file "/PARENT/testFolder/testfile.txt" for user "Alice" should be "some data"
And the content of file "/PARENT/testFolder-copy/testfile.txt" for user "Alice" should be "some data"
@issue-10331
Scenario: copy file within a public link folder to a new folder
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And user "Alice" has created folder "/PARENT/testFolder"
@@ -56,7 +56,7 @@ Feature: copying from public link share
And the content of file "/PARENT/testfile.txt" for user "Alice" should be "some data"
And the content of file "/PARENT/testFolder/copy1.txt" for user "Alice" should be "some data"
@issue-10331
Scenario: copy file within a public link folder to existing file
Given user "Alice" has uploaded file with content "some data 0" to "/PARENT/testfile.txt"
And user "Alice" has uploaded file with content "some data 1" to "/PARENT/copy1.txt"
@@ -71,7 +71,7 @@ Feature: copying from public link share
And as "Alice" file "/PARENT/copy1.txt" should exist
And the content of file "/PARENT/copy1.txt" for user "Alice" should be "some data 0"
@issue-1232
@issue-1232 @issue-10331
Scenario: copy folder within a public link folder to existing file
Given user "Alice" has created folder "/PARENT/testFolder"
And user "Alice" has uploaded file with content "some data" to "/PARENT/testFolder/testfile.txt"
@@ -88,7 +88,7 @@ Feature: copying from public link share
But as "Alice" file "/PARENT/copy1.txt" should not exist
And as "Alice" file "/copy1.txt" should exist in the trashbin
@issue-10331
Scenario: copy file within a public link folder and delete file
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And using SharingNG
@@ -101,7 +101,7 @@ Feature: copying from public link share
Then the HTTP status code should be "204"
And as "Alice" file "/PARENT/copy1.txt" should not exist
@issue-1232
@issue-1232 @issue-10331
Scenario: copy file within a public link folder to existing folder
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And user "Alice" has created folder "/PARENT/new-folder"
@@ -118,7 +118,7 @@ Feature: copying from public link share
And as "Alice" folder "/PARENT/new-folder" should not exist
And as "Alice" folder "new-folder" should exist in the trashbin
@issue-10331
Scenario Outline: copy file with special characters in it's name within a public link folder
Given user "Alice" has uploaded file with content "some data" to "/PARENT/<file-name>"
And using SharingNG
@@ -139,7 +139,7 @@ Feature: copying from public link share
| C++ file.cpp |
| sample,1.txt |
@issue-10331
Scenario Outline: copy file within a public link folder to a file with special characters in it's name
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And using SharingNG
@@ -160,7 +160,7 @@ Feature: copying from public link share
| C++ file.cpp |
| sample,1.txt |
@issue-10331
Scenario Outline: copy file within a public link folder into a folder with special characters
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And user "Alice" has created folder "/PARENT/<destination-folder-name>"
@@ -182,7 +182,7 @@ Feature: copying from public link share
| C++ file.cpp |
| sample,1.txt |
@issue-8711
@issue-8711 @issue-10331
Scenario: copy file within a public link folder to a same file
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And using SharingNG
@@ -194,7 +194,7 @@ Feature: copying from public link share
Then the HTTP status code should be "204"
And the content of file "/PARENT/testfile.txt" for user "Alice" should be "some data"
@issue-8711
@issue-8711 @issue-10331
Scenario: copy folder within a public link folder to a same folder
Given user "Alice" has created folder "/PARENT/testFolder"
And user "Alice" has uploaded file with content "some data" to "/PARENT/testFolder/testfile.txt"
@@ -208,7 +208,7 @@ Feature: copying from public link share
And as "Alice" folder "/PARENT/testFolder" should exist
And the content of file "/PARENT/testFolder/testfile.txt" for user "Alice" should be "some data"
@issue-1230
@issue-1230 @issue-10331
Scenario: copy file within a public link folder to a share item root
Given user "Alice" has uploaded file with content "some data" to "/PARENT/testfile.txt"
And using SharingNG
@@ -221,7 +221,7 @@ Feature: copying from public link share
And as "Alice" file "/PARENT/testfile.txt" should exist
And the content of file "/PARENT/testfile.txt" for user "Alice" should be "some data"
@issue-1230
@issue-1230 @issue-10331
Scenario: copy folder within a public link folder to a share item root
Given user "Alice" has created folder "/PARENT/testFolder"
And user "Alice" has uploaded file with content "some data" to "/PARENT/testFolder/testfile.txt"

View File

@@ -91,7 +91,7 @@ Feature: update a public link share
| 1 | 100 |
| 2 | 200 |
@issue-9724 @issue-10331
Scenario Outline: creating a new public link share with password and adding an expiration date using public API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has uploaded file with content "Random data" to "/randomfile.txt"
@@ -225,7 +225,7 @@ Feature: update a public link share
| 1 | 100 |
| 2 | 200 |
@issue-1269
@issue-1269 @issue-9724 @issue-10331
Scenario Outline: updating share permissions from change to read restricts public from deleting files using the public API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has created folder "PARENT"
@@ -249,7 +249,7 @@ Feature: update a public link share
| 1 |
| 2 |
@issue-9724 @issue-10331
Scenario Outline: updating share permissions from read to change allows public to delete files using the public API
Given using OCS API version "<ocs-api-version>"
And user "Alice" has created folder "PARENT"

View File

@@ -9,7 +9,7 @@ Feature: upload to a public link share
Given user "Alice" has been created with default attributes and without skeleton files
And user "Alice" has created folder "FOLDER"
@issue-10331
Scenario Outline: uploading file to a public upload-only share using public API that was deleted does not work
Given using <dav-path-version> DAV path
And using SharingNG
@@ -29,7 +29,7 @@ Feature: upload to a public link share
| new |
| spaces |
@issue-1269
@issue-1269 @issue-10331
Scenario: uploading file to a public read-only share folder with public API does not work
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -40,7 +40,7 @@ Feature: upload to a public link share
When the public uploads file "test.txt" with password "%public%" and content "test-file" using the new public WebDAV API
And the HTTP status code should be "403"
@issue-10331
Scenario: uploading to a public upload-only share with public API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -54,7 +54,7 @@ Feature: upload to a public link share
And the following headers should match these regular expressions
| ETag | /^"[a-f0-9:\.]{1,32}"$/ |
@issue-10331
Scenario: uploading to a public upload-only share with password with public API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -66,7 +66,7 @@ Feature: upload to a public link share
Then the HTTP status code should be "201"
And the content of file "/FOLDER/test.txt" for user "Alice" should be "test-file"
@issue-10331
Scenario: uploading to a public read/write share with password with public API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -78,7 +78,7 @@ Feature: upload to a public link share
Then the HTTP status code should be "201"
And the content of file "/FOLDER/test.txt" for user "Alice" should be "test-file"
@skipOnReva
@skipOnReva @issue-10331
Scenario: uploading file to a public shared folder with read/write permission when the sharer has insufficient quota does not work with public API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -90,7 +90,7 @@ Feature: upload to a public link share
When the public uploads file "test.txt" with password "%public%" and content "test2" using the new public WebDAV API
Then the HTTP status code should be "507"
@skipOnReva
@skipOnReva @issue-10331
Scenario: uploading file to a public shared folder with upload-only permission when the sharer has insufficient quota does not work with public API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -102,7 +102,7 @@ Feature: upload to a public link share
When the public uploads file "test.txt" with password "%public%" and content "test2" using the new public WebDAV API
Then the HTTP status code should be "507"
@smokeTest
@smokeTest @issue-10331
Scenario: uploading to a public upload-write and no edit and no overwrite share with public API
Given using SharingNG
And user "Alice" has created the following resource link share:
@@ -114,7 +114,7 @@ Feature: upload to a public link share
Then the HTTP status code should be "201"
And the content of file "/FOLDER/test.txt" for user "Alice" should be "test2"
@smokeTest @issue-1267
@smokeTest @issue-1267 @issue-10331
Scenario: uploading same file to a public upload-write and no edit and no overwrite share multiple times with new public API
Given using SharingNG
And user "Alice" has created the following resource link share:

View File

@@ -197,10 +197,11 @@ Feature: using trashbin together with sharing
| spaces |
Scenario Outline: restoring a file to a read-only folder
Scenario Outline: restoring personal file to a read-only folder
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Brian" has created folder "shareFolderParent"
And user "Brian" has uploaded file with content "file to delete" to "shareFolderParent/textfile0.txt"
And user "Brian" has sent the following resource share invitation:
| resource | shareFolderParent |
| space | Personal |
@@ -208,20 +209,20 @@ Feature: using trashbin together with sharing
| shareType | user |
| permissionsRole | Viewer |
And user "Alice" has a share "shareFolderParent" synced
And as "Alice" folder "/Shares/shareFolderParent" should exist
And user "Alice" has deleted file "/textfile0.txt"
When user "Alice" restores the file with original path "/textfile0.txt" to "/Shares/shareFolderParent/textfile0.txt" using the trashbin API
Then the HTTP status code should be "403"
Then the HTTP status code should be "<http-status-code>"
And as "Alice" the file with original path "/textfile0.txt" should exist in the trashbin
And as "Alice" file "/Shares/shareFolderParent/textfile0.txt" should not exist
And as "Brian" file "/shareFolderParent/textfile0.txt" should not exist
And as "Brian" the file with original path "/textfile0.txt" should not exist in the trashbin
And as "Alice" file "/Shares/shareFolderParent/textfile0.txt" should exist
And as "Brian" file "/shareFolderParent/textfile0.txt" should exist
Examples:
| dav-path-version |
| new |
| spaces |
| dav-path-version | http-status-code |
| new | 403 |
| spaces | 400 |
Scenario Outline: restoring a file to a read-only sub-folder
Scenario Outline: restoring personal file to a read-only sub-folder
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Brian" has created folder "shareFolderParent"
@@ -236,11 +237,36 @@ Feature: using trashbin together with sharing
And as "Alice" folder "/Shares/shareFolderParent/shareFolderChild" should exist
And user "Alice" has deleted file "/textfile0.txt"
When user "Alice" restores the file with original path "/textfile0.txt" to "/Shares/shareFolderParent/shareFolderChild/textfile0.txt" using the trashbin API
Then the HTTP status code should be "403"
Then the HTTP status code should be "<http-status-code>"
And as "Alice" the file with original path "/textfile0.txt" should exist in the trashbin
And as "Alice" file "/Shares/shareFolderParent/shareFolderChild/textfile0.txt" should not exist
And as "Brian" file "/shareFolderParent/shareFolderChild/textfile0.txt" should not exist
Examples:
| dav-path-version |
| new |
| spaces |
| dav-path-version | http-status-code |
| new | 403 |
| spaces | 400 |
Scenario Outline: try to restore personal file to a shared folder as an editor
Given using <dav-path-version> DAV path
And user "Brian" has been created with default attributes and without skeleton files
And user "Brian" has created folder "shareFolderParent"
And user "Brian" has uploaded file with content "file to delete" to "shareFolderParent/textfile0.txt"
And user "Brian" has sent the following resource share invitation:
| resource | shareFolderParent |
| space | Personal |
| sharee | Alice |
| shareType | user |
| permissionsRole | Editor |
And user "Alice" has a share "shareFolderParent" synced
And user "Alice" has deleted file "/textfile0.txt"
When user "Alice" restores the file with original path "/textfile0.txt" to "/Shares/shareFolderParent/textfile0.txt" using the trashbin API
Then the HTTP status code should be "<http-status-code>"
And as "Alice" the file with original path "/textfile0.txt" should exist in the trashbin
And as "Brian" the file with original path "/shareFolderParent/textfile0.txt" should not exist in the trashbin
And as "Brian" file "/shareFolderParent/textfile0.txt" should exist
And as "Alice" file "/Shares/shareFolderParent/textfile0.txt" should exist
Examples:
| dav-path-version | http-status-code |
| new | 403 |
| spaces | 400 |

View File

@@ -31,8 +31,8 @@ Feature: restore deleted files/folders
| /textfile1.txt |
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: file deleted from a folder can be restored to the original folder
@@ -47,8 +47,8 @@ Feature: restore deleted files/folders
And the content of file "/new-folder/new-file.txt" for user "Alice" should be "file to delete"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: file deleted from a folder is restored to the original folder if the original folder was deleted and restored
@@ -65,8 +65,8 @@ Feature: restore deleted files/folders
And the content of file "/new-folder/new-file.txt" for user "Alice" should be "file to delete"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: file is deleted and restored to a new destination
@@ -85,11 +85,11 @@ Feature: restore deleted files/folders
And the content of file "<restore-path>" for user "Alice" should be "to delete"
Examples:
| dav-path-version | delete-path | restore-path |
| old | /PARENT/parent.txt | parent.txt |
| spaces | /PARENT/parent.txt | parent.txt |
| new | /PARENT/parent.txt | parent.txt |
| old | /PARENT/CHILD/child.txt | child.txt |
| spaces | /PARENT/CHILD/child.txt | child.txt |
| new | /PARENT/CHILD/child.txt | child.txt |
| old | /textfile0.txt | PARENT/textfile0.txt |
| spaces | /textfile0.txt | PARENT/textfile0.txt |
| new | /textfile0.txt | PARENT/textfile0.txt |
@@ -105,9 +105,9 @@ Feature: restore deleted files/folders
And the content of file <upload-path> for user "Alice" should be "file to delete"
Examples:
| dav-path-version | upload-path | delete-path |
| old | "/PARENT/textfile0.txt" | "/textfile0.txt" |
| spaces | "/PARENT/textfile0.txt" | "/textfile0.txt" |
| new | "/PARENT/textfile0.txt" | "/textfile0.txt" |
| old | "/PARENT/.hiddenfile0.txt" | ".hiddenfile0.txt" |
| spaces | "/PARENT/.hiddenfile0.txt" | ".hiddenfile0.txt" |
| new | "/PARENT/.hiddenfile0.txt" | ".hiddenfile0.txt" |
@@ -127,8 +127,8 @@ Feature: restore deleted files/folders
And the content of file "/new-folder/new-file.txt" for user "Alice" should be "file to delete"
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@smokeTest
Scenario Outline: deleted file cannot be restored by a different user
@@ -136,14 +136,14 @@ Feature: restore deleted files/folders
And user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has deleted file "/textfile0.txt"
When user "Brian" tries to restore the file with original path "/textfile0.txt" from the trashbin of user "Alice" using the trashbin API
Then the HTTP status code should be "404"
Then the HTTP status code should be "<http-status-code>"
And as "Alice" the folder with original path "/textfile0.txt" should exist in the trashbin
And user "Alice" should not see the following elements
| /textfile0.txt |
Examples:
| dav-path-version |
| old |
| new |
| dav-path-version | http-status-code |
| new | 404 |
| spaces | 400 |
@smokeTest
Scenario Outline: deleted file cannot be restored with invalid password
@@ -157,8 +157,8 @@ Feature: restore deleted files/folders
| /textfile0.txt |
Examples:
| dav-path-version |
| old |
| new |
| spaces |
@smokeTest
Scenario Outline: deleted file cannot be restored without using a password
@@ -172,7 +172,7 @@ Feature: restore deleted files/folders
| /textfile0.txt |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -187,11 +187,11 @@ Feature: restore deleted files/folders
And the content of file "<file-name>" for user "Alice" should be "file original content"
Examples:
| dav-path-version | file-name |
| old | 😛 😜 🐱 🐭 🚴 |
| spaces | 😛 😜 🐱 🐭 🚴 |
| new | 😛 😜 🐱 🐭 🚴 |
| old | strängé file |
| spaces | strängé file |
| new | strängé file |
| old | sample,1.txt |
| spaces | sample,1.txt |
| new | sample,1.txt |
@@ -209,7 +209,7 @@ Feature: restore deleted files/folders
And the content of file "/new-folder/folder1/folder2/new-file.txt" for user "Alice" should be "file to delete"
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -227,7 +227,7 @@ Feature: restore deleted files/folders
And the content of file "/new-folder/folder1/folder2/new-file.txt" for user "Alice" should be "file to delete"
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -247,7 +247,7 @@ Feature: restore deleted files/folders
But as "Alice" the folder with original path "/new-folder" should exist in the trashbin
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -267,7 +267,7 @@ Feature: restore deleted files/folders
But as "Alice" the file with original path "/new-folder/folder1/folder2/not-restored.txt" should exist in the trashbin
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -301,7 +301,7 @@ Feature: restore deleted files/folders
| /FOLDER/.hidden_file |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -340,7 +340,7 @@ Feature: restore deleted files/folders
| # %ab ab?=ed.txt |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -384,7 +384,7 @@ Feature: restore deleted files/folders
| Folder,Comma |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -402,7 +402,7 @@ Feature: restore deleted files/folders
And the content of file "parent.txt" for user "Alice" should be "parent text"
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -421,7 +421,7 @@ Feature: restore deleted files/folders
| /parent_folder/sub/parent.txt |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -445,7 +445,7 @@ Feature: restore deleted files/folders
| /parent_folder/sub/parent.txt |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -464,7 +464,7 @@ Feature: restore deleted files/folders
| /parent_folder/sub/parent.txt |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -479,7 +479,7 @@ Feature: restore deleted files/folders
| /parent.txt |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -533,7 +533,7 @@ Feature: restore deleted files/folders
| /fo.exe |
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -549,7 +549,7 @@ Feature: restore deleted files/folders
And as "Alice" the folder with original path "same-name.txt" should exist in the trashbin
Examples:
| dav-path-version |
| old |
| spaces |
| new |
@@ -565,5 +565,5 @@ Feature: restore deleted files/folders
And as "Alice" the file with original path "same-name.txt" should exist in the trashbin
Examples:
| dav-path-version |
| old |
| spaces |
| new |

View File

@@ -95,19 +95,19 @@ Feature: dav-versions
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "123" to "/davtest.txt"
And we save it into "FILEID"
When user "Brian" sends HTTP method "PROPFIND" to URL "/remote.php/dav/meta/<<FILEID>>"
When user "Brian" sends HTTP method "PROPFIND" to URL "/dav/meta/<<FILEID>>"
Then the HTTP status code should be "400" or "404"
Scenario: user cannot access meta folder of a file which does not exist
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" sends HTTP method "PROPFIND" to URL "/remote.php/dav/meta/MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA=="
When user "Brian" sends HTTP method "PROPFIND" to URL "/dav/meta/MTI4NGQyMzgtYWE5Mi00MmNlLWJkYzQtMGIwMDAwMDA5MTU2OjhjY2QyNzUxLTkwYTQtNDBmMi1iOWYzLTYxZWRmODQ0MjFmNA=="
Then the HTTP status code should be "400" or "404"
Scenario Outline: user cannot access meta folder of a file with invalid fileid
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" sends HTTP method "PROPFIND" to URL "/remote.php/dav/meta/<file-id>/v"
When user "Brian" sends HTTP method "PROPFIND" to URL "/dav/meta/<file-id>/v"
Then the HTTP status code should be "400" or "404"
Examples:
| file-id | decoded-value | comment |

View File

@@ -139,14 +139,10 @@ Feature: delete file
And as "Alice" file "/zerobyte.txt" should not exist
@issue-9619
Scenario Outline: delete a file using file-id
Scenario: delete a file using file-id
Given using spaces DAV path
And user "Alice" has uploaded file with content "special file" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" deletes file "/textfile.txt" from space "Personal" using file-id path "<dav-path>"
When user "Alice" deletes file "/textfile.txt" from space "Personal" using file-id "<<FILEID>>"
Then the HTTP status code should be "204"
And as "Alice" file "/textfile.txt" should not exist
Examples:
| dav-path |
| /remote.php/dav/spaces/<<FILEID>> |
| /dav/spaces/<<FILEID>> |

View File

@@ -215,7 +215,7 @@ Feature: propagation of etags when deleting a file or folder
| old |
| new |
@issue-4251 @skipOnReva
@issue-4251 @skipOnReva @issue-10331
Scenario Outline: deleting a file in a publicly shared folder changes its etag for the sharer
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "uploaded content" to "/upload/file.txt"
@@ -239,7 +239,7 @@ Feature: propagation of etags when deleting a file or folder
| new |
| spaces |
@issue-4251 @skipOnReva
@issue-4251 @skipOnReva @issue-10331
Scenario Outline: deleting a folder in a publicly shared folder changes its etag for the sharer
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/upload/sub"

View File

@@ -284,7 +284,7 @@ Feature: propagation of etags when moving files or folders
| old |
| new |
@skipOnReva
@skipOnReva @issue-10331
Scenario Outline: renaming a file in a publicly shared folder changes its etag for the sharer
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/upload"
@@ -309,7 +309,7 @@ Feature: propagation of etags when moving files or folders
| new |
| spaces |
@skipOnReva
@skipOnReva @issue-10331
Scenario Outline: renaming a folder in a publicly shared folder changes its etag for the sharer
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/upload"

View File

@@ -104,7 +104,7 @@ Feature: propagation of etags when copying files or folders
| new |
| spaces |
@env-config @issue-4251
@env-config @issue-4251 @issue-10331
Scenario Outline: copying a file inside a publicly shared folder by public changes etag for the sharer
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using <dav-path-version> DAV path

View File

@@ -107,7 +107,7 @@ Feature: propagation of etags when creating folders
| old |
| new |
@env-config @issue-4251
@env-config @issue-4251 @issue-10331
Scenario Outline: creating a folder in a publicly shared folder changes its etag for the sharer
Given the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
And using <dav-path-version> DAV path
@@ -127,6 +127,5 @@ Feature: propagation of etags when creating folders
| Alice | /folder |
Examples:
| dav-path-version |
| old |
| new |
| spaces |

View File

@@ -25,8 +25,8 @@ Feature: propagation of etags when restoring a file or folder from trash
| Alice | /upload/sub |
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: restoring a file to an other location changes the etags of all parents
@@ -48,8 +48,8 @@ Feature: propagation of etags when restoring a file or folder from trash
| Alice | /restore/sub |
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: restoring a folder to its original location changes the etags of all parents
@@ -69,8 +69,8 @@ Feature: propagation of etags when restoring a file or folder from trash
| Alice | /upload/sub |
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: restoring a folder to an other location changes the etags of all parents
@@ -92,5 +92,5 @@ Feature: propagation of etags when restoring a file or folder from trash
| Alice | /restore/sub |
Examples:
| dav-path-version |
| old |
| new |
| spaces |

View File

@@ -166,7 +166,7 @@ Feature: propagation of etags when uploading data
| old |
| new |
@issue-4251 @skipOnReva
@issue-4251 @skipOnReva @issue-10331
Scenario Outline: uploading a file into a publicly shared folder changes its etag for the sharer
Given using <dav-path-version> DAV path
And using SharingNG

View File

@@ -108,7 +108,7 @@ Feature: list files
| new |
| spaces |
@env-config
@env-config @issue-10071 @issue-10331
Scenario: get the list of resources in a folder shared through public link with depth 0
Given using new DAV path
And the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"
@@ -136,7 +136,7 @@ Feature: list files
| /simple-folder1/simple-folder2/simple-folder3 |
| /simple-folder1/simple-folder2/simple-folder3/simple-folder4 |
@env-config
@env-config @issue-10071 @issue-10331
Scenario: get the list of resources in a folder shared through public link with depth 1
Given using new DAV path
And the config "OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD" has been set to "false"

View File

@@ -4,39 +4,39 @@ Feature: PROPFIND
So that I can get the information about a resource
@issue-751
Scenario Outline: send PROPFIND request to "/remote.php/dav/(files|spaces)"
Scenario Outline: send PROPFIND request to "/dav/(files|spaces)"
Given user "Alice" has been created with default attributes and without skeleton files
When user "Alice" requests "<dav-path>" with "PROPFIND" using basic auth
Then the HTTP status code should be "405"
Examples:
| dav-path |
| /remote.php/dav/files |
| /remote.php/dav/spaces |
| dav-path |
| /dav/files |
| /dav/spaces |
Scenario Outline: send PROPFIND request to "/remote.php/dav/(files|spaces)" with depth header
@issue-10334
Scenario Outline: send PROPFIND request to "/dav/(files|spaces)" with depth header
Given user "Alice" has been created with default attributes and without skeleton files
When user "Alice" requests "<dav-path>" with "PROPFIND" using basic auth and with headers
| header | value |
| depth | <depth> |
Then the HTTP status code should be "<http-status-code>"
Examples:
| dav-path | depth | http-status-code |
| /remote.php/webdav | 0 | 207 |
| /remote.php/webdav | 1 | 207 |
| /remote.php/dav/files/alice | 0 | 207 |
| /remote.php/dav/files/alice | 1 | 207 |
| /remote.php/dav/spaces/%spaceid% | 0 | 207 |
| /remote.php/dav/spaces/%spaceid% | 1 | 207 |
| /remote.php/dav/spaces/%spaceid% | infinity | 400 |
| dav-path | depth | http-status-code |
| /webdav | 0 | 207 |
| /webdav | 1 | 207 |
| /dav/files/alice | 0 | 207 |
| /dav/files/alice | 1 | 207 |
| /dav/spaces/%spaceid% | 0 | 207 |
| /dav/spaces/%spaceid% | 1 | 207 |
| /dav/spaces/%spaceid% | infinity | 400 |
@skipOnReva
Examples:
| dav-path | depth | http-status-code |
| /remote.php/webdav | infinity | 400 |
| /remote.php/dav/files/alice | infinity | 400 |
| dav-path | depth | http-status-code |
| /webdav | infinity | 400 |
| /dav/files/alice | infinity | 400 |
@skipOnReva
@skipOnReva @issue-10071 @issue-10331
Scenario: send PROPFIND request to a public link shared with password
Given user "Alice" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/PARENT"
@@ -48,10 +48,10 @@ Feature: PROPFIND
| password | %public% |
When the public sends "PROPFIND" request to the last public link share using the new public WebDAV API with password "%public%"
Then the HTTP status code should be "207"
And the value of the item "//d:href" in the response should match "/%base_path%\/remote.php\/dav\/public-files\/%public_token%\/$/"
And the value of the item "//d:href" in the response should match "/\/dav\/public-files\/%public_token%\/$/"
And the value of the item "//oc:public-link-share-owner" in the response should be "Alice"
@skipOnReva
@skipOnReva @issue-10071 @issue-10331
Scenario: send PROPFIND request to a public link shared with password (request without password)
Given user "Alice" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/PARENT"
@@ -65,7 +65,7 @@ Feature: PROPFIND
Then the HTTP status code should be "401"
And the value of the item "/d:error/s:exception" in the response should be "Sabre\DAV\Exception\NotAuthenticated"
@skipOnReva
@skipOnReva @issue-10071 @issue-10331
Scenario: send PROPFIND request to a public link shared with password (request with incorrect password)
Given user "Alice" has been created with default attributes and without skeleton files
And user "Alice" has created folder "/PARENT"

View File

@@ -21,7 +21,7 @@ Feature: Search
And user "Alice" has uploaded file with content "does-not-matter" to "/upload😀 😁/upload😀 😁.txt"
And user "Alice" has uploaded file with content "file with comma in filename" to "/upload😀 😁/upload,1.txt"
@smokeTest
@smokeTest @issue-10329
Scenario Outline: search for entry by pattern
Given using <dav-path-version> DAV path
When user "Alice" searches for "*upload*" using the WebDAV API
@@ -43,7 +43,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: search for entries by only some letters from the middle of the entry name
Given using <dav-path-version> DAV path
And user "Alice" has created folder "FOLDER"
@@ -61,7 +61,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: search for files by extension
Given using <dav-path-version> DAV path
When user "Alice" searches for "*png*" using the WebDAV API
@@ -91,7 +91,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: limit returned search entries
Given using <dav-path-version> DAV path
When user "Alice" searches for "*upload*" and limits the results to "3" items using the WebDAV API
@@ -111,7 +111,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: limit returned search entries to only 1 entry
Given using <dav-path-version> DAV path
When user "Alice" searches for "*upload*" and limits the results to "1" items using the WebDAV API
@@ -131,7 +131,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: limit returned search entries to more entries than there are
Given using <dav-path-version> DAV path
When user "Alice" searches for "*upload*" and limits the results to "100" items using the WebDAV API
@@ -152,7 +152,7 @@ Feature: Search
| new |
| spaces |
@issue-4712 @issue-9780 @issue-9781 @issue-9783
@issue-4712 @issue-9780 @issue-9781 @issue-9783 @issue-10329
Scenario Outline: report extra properties in search entries for a file
Given using <dav-path-version> DAV path
When user "Alice" searches for "*upload*" using the WebDAV API requesting these properties:
@@ -181,7 +181,7 @@ Feature: Search
| new |
| spaces |
@issue-4712 @issue-9780 @issue-9781 @issue-9783
@issue-4712 @issue-9780 @issue-9781 @issue-9783 @issue-10329
Scenario Outline: report extra properties in search entries for a folder
Given using <dav-path-version> DAV path
When user "Alice" searches for "*upload*" using the WebDAV API requesting these properties:
@@ -209,7 +209,7 @@ Feature: Search
| new |
| spaces |
@issue-10329
Scenario Outline: search for entry with emoji by pattern
Given using <dav-path-version> DAV path
When user "Alice" searches for '"*😀 😁*"' using the WebDAV API

View File

@@ -165,7 +165,7 @@ Feature: create files and folder
| spaces | "'single'.txt" |
| spaces | '"double".txt' |
@issue-10339
Scenario Outline: try to create file with '.', '..' and 'empty'
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "some text" to "<file-name>" using the WebDAV API
@@ -185,7 +185,7 @@ Feature: create files and folder
| spaces | /../lorem | 400 |
| spaces | | 400 |
@issue-10339
Scenario Outline: try to create folder with '.', '..' and 'empty'
Given using <dav-path-version> DAV path
When user "Alice" creates folder "<folder-name>" using the WebDAV API

View File

@@ -38,19 +38,19 @@ Feature: get file properties
And the properties response should contain an etag
And there should be an entry with href containing "<expected-href>" in the response to user "Alice"
Examples:
| dav-path-version | file-name | expected-href |
| old | /C++ file.cpp | remote.php/webdav/C++ file.cpp |
| old | /file #2.txt | remote.php/webdav/file #2.txt |
| old | /file ?2.txt | remote.php/webdav/file ?2.txt |
| old | /file &2.txt | remote.php/webdav/file &2.txt |
| new | /C++ file.cpp | remote.php/dav/files/%username%/C++ file.cpp |
| new | /file #2.txt | remote.php/dav/files/%username%/file #2.txt |
| new | /file ?2.txt | remote.php/dav/files/%username%/file ?2.txt |
| new | /file &2.txt | remote.php/dav/files/%username%/file &2.txt |
| spaces | /C++ file.cpp | dav/spaces/%spaceid%/C++ file.cpp |
| spaces | /file #2.txt | dav/spaces/%spaceid%/file #2.txt |
| spaces | /file ?2.txt | dav/spaces/%spaceid%/file ?2.txt |
| spaces | /file &2.txt | dav/spaces/%spaceid%/file &2.txt |
| dav-path-version | file-name | expected-href |
| old | /C++ file.cpp | webdav/C++ file.cpp |
| old | /file #2.txt | webdav/file #2.txt |
| old | /file ?2.txt | webdav/file ?2.txt |
| old | /file &2.txt | webdav/file &2.txt |
| new | /C++ file.cpp | dav/files/%username%/C++ file.cpp |
| new | /file #2.txt | dav/files/%username%/file #2.txt |
| new | /file ?2.txt | dav/files/%username%/file ?2.txt |
| new | /file &2.txt | dav/files/%username%/file &2.txt |
| spaces | /C++ file.cpp | dav/spaces/%spaceid%/C++ file.cpp |
| spaces | /file #2.txt | dav/spaces/%spaceid%/file #2.txt |
| spaces | /file ?2.txt | dav/spaces/%spaceid%/file ?2.txt |
| spaces | /file &2.txt | dav/spaces/%spaceid%/file &2.txt |
@issue-1296
Scenario Outline: user sends a PROPFIND request on various folder names
@@ -64,28 +64,28 @@ Feature: get file properties
And there should be an entry with href containing "<expected-href>/file1.txt" in the response to user "Alice"
And there should be an entry with href containing "<expected-href>/file2.txt" in the response to user "Alice"
Examples:
| dav-path-version | folder-name | expected-href |
| old | /upload | remote.php/webdav/upload |
| old | /strängé folder | remote.php/webdav/strängé folder |
| old | /C++ folder | remote.php/webdav/C++ folder |
| old | / | remote.php/webdav/ |
| old | /folder #2.txt | remote.php/webdav/folder #2.txt |
| old | /folder ?2.txt | remote.php/webdav/folder ?2.txt |
| old | /folder &2.txt | remote.php/webdav/folder &2.txt |
| new | /upload | remote.php/dav/files/%username%/upload |
| new | /strängé folder | remote.php/dav/files/%username%/strängé folder |
| new | /C++ folder | remote.php/dav/files/%username%/C++ folder |
| new | / | remote.php/dav/files/%username%/ |
| new | /folder #2.txt | remote.php/dav/files/%username%/folder #2.txt |
| new | /folder ?2.txt | remote.php/dav/files/%username%/folder ?2.txt |
| new | /folder &2.txt | remote.php/dav/files/%username%/folder &2.txt |
| spaces | /upload | dav/spaces/%spaceid%/upload |
| spaces | /strängé folder | dav/spaces/%spaceid%/strängé folder |
| spaces | /C++ folder | dav/spaces/%spaceid%/C++ folder |
| spaces | / | dav/spaces/%spaceid%/ |
| spaces | /folder #2.txt | dav/spaces/%spaceid%/folder #2.txt |
| spaces | /folder ?2.txt | dav/spaces/%spaceid%/folder ?2.txt |
| spaces | /folder &2.txt | dav/spaces/%spaceid%/folder &2.txt |
| dav-path-version | folder-name | expected-href |
| old | /upload | webdav/upload |
| old | /strängé folder | webdav/strängé folder |
| old | /C++ folder | webdav/C++ folder |
| old | / | webdav/ |
| old | /folder #2.txt | webdav/folder #2.txt |
| old | /folder ?2.txt | webdav/folder ?2.txt |
| old | /folder &2.txt | webdav/folder &2.txt |
| new | /upload | dav/files/%username%/upload |
| new | /strängé folder | dav/files/%username%/strängé folder |
| new | /C++ folder | dav/files/%username%/C++ folder |
| new | / | dav/files/%username%/ |
| new | /folder #2.txt | dav/files/%username%/folder #2.txt |
| new | /folder ?2.txt | dav/files/%username%/folder ?2.txt |
| new | /folder &2.txt | dav/files/%username%/folder &2.txt |
| spaces | /upload | dav/spaces/%spaceid%/upload |
| spaces | /strängé folder | dav/spaces/%spaceid%/strängé folder |
| spaces | /C++ folder | dav/spaces/%spaceid%/C++ folder |
| spaces | / | dav/spaces/%spaceid%/ |
| spaces | /folder #2.txt | dav/spaces/%spaceid%/folder #2.txt |
| spaces | /folder ?2.txt | dav/spaces/%spaceid%/folder ?2.txt |
| spaces | /folder &2.txt | dav/spaces/%spaceid%/folder &2.txt |
Scenario Outline: user sends a PROPFIND request on various files inside various folders
@@ -286,11 +286,11 @@ Feature: get file properties
And the value of the item "/d:error/s:exception" in the response about user "Alice" should be "Sabre\DAV\Exception\NotFound"
Examples:
| url | message1 | message2 |
| /remote.php/dav/files/does-not-exist | Resource not found | Resource not found |
| /remote.php/dav/does-not-exist | File not found in root | |
| /remote.php/dav/spaces/%spaceid%/does-not-exist | Resource not found | |
| /remote.php/dav/spaces/%spaceid%/file1.txt | Resource not found | |
| url | message1 | message2 |
| /dav/files/does-not-exist | Resource not found | Resource not found |
| /dav/does-not-exist | File not found in root | |
| /dav/spaces/%spaceid%/does-not-exist | Resource not found | |
| /dav/spaces/%spaceid%/file1.txt | Resource not found | |
@issue-1297
Scenario Outline: add, receive multiple custom meta properties to a file

View File

@@ -372,7 +372,7 @@ Feature: upload file
And for user "Brian" the content of the file "/textfile.txt" of the space "new-space" should be ""
And for user "Alice" the content of the file "/textfile.txt" of the space "new-space" should be ""
@issue-8699
@issue-8699 @issue-10331
Scenario: user updates a file inside a link shared space with empty content
Given using SharingNG
And user "Brian" has been created with default attributes and without skeleton files

View File

@@ -28,7 +28,7 @@ Feature: tests of the creation extension see https://tus.io/protocols/resumable-
| new |
| spaces |
@issue-10346
Scenario Outline: creating a new resource and upload data in multiple bytes using creation with upload extension
Given using <dav-path-version> DAV path
When user "Alice" creates file "textFile.txt" and uploads content "12345" in the same request using the TUS protocol on the WebDAV API

View File

@@ -9,10 +9,10 @@ Feature: OPTIONS request
Scenario: send OPTIONS request to webDav endpoints using the TUS protocol with valid password and username
When user "Alice" requests these endpoints with "OPTIONS" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/ |
| /remote.php/dav/files/%username%/ |
| /remote.php/dav/spaces/%spaceid%/ |
| endpoint |
| /webdav/ |
| /dav/files/%username%/ |
| /dav/spaces/%spaceid%/ |
Then the HTTP status code should be "204"
And the following headers should be set
| header | value |
@@ -24,10 +24,10 @@ Feature: OPTIONS request
Scenario: send OPTIONS request to webDav endpoints using the TUS protocol without any authentication
When a user requests these endpoints with "OPTIONS" with body "doesnotmatter" and no authentication about user "Alice"
| endpoint |
| /remote.php/webdav/ |
| /remote.php/dav/files/%username%/ |
| /remote.php/dav/spaces/%spaceid%/ |
| endpoint |
| /webdav/ |
| /dav/files/%username%/ |
| /dav/spaces/%spaceid%/ |
Then the HTTP status code should be "204"
And the following headers should be set
| header | value |
@@ -39,10 +39,10 @@ Feature: OPTIONS request
@issue-1012
Scenario: send OPTIONS request to webDav endpoints using the TUS protocol with valid username and wrong password
When user "Alice" requests these endpoints with "OPTIONS" including body "doesnotmatter" using password "invalid" about user "Alice"
| endpoint |
| /remote.php/webdav/ |
| /remote.php/dav/files/%username%/ |
| /remote.php/dav/spaces/%spaceid%/ |
| endpoint |
| /webdav/ |
| /dav/files/%username%/ |
| /dav/spaces/%spaceid%/ |
Then the HTTP status code should be "204"
And the following headers should be set
| header | value |
@@ -55,10 +55,10 @@ Feature: OPTIONS request
Scenario: send OPTIONS requests to webDav endpoints using valid password and username of different user
Given user "Brian" has been created with default attributes and without skeleton files
When user "Brian" requests these endpoints with "OPTIONS" including body "doesnotmatter" using the password of user "Alice"
| endpoint |
| /remote.php/webdav/ |
| /remote.php/dav/files/%username%/ |
| /remote.php/dav/spaces/%spaceid%/ |
| endpoint |
| /webdav/ |
| /dav/files/%username%/ |
| /dav/spaces/%spaceid%/ |
Then the HTTP status code should be "204"
And the following headers should be set
| header | value |

View File

@@ -6,7 +6,7 @@ Feature: upload file
Background:
Given user "Alice" has been created with default attributes and without skeleton files
@issue-10346
Scenario Outline: upload a file and check download content
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "uploaded content" to "<file-name>" using the TUS protocol on the WebDAV API
@@ -35,7 +35,7 @@ Feature: upload file
| spaces | /?fi=le&%#2 . txt |
| spaces | /# %ab ab?=ed |
@issue-10346
Scenario Outline: upload a file into a folder and check download content
Given using <dav-path-version> DAV path
And user "Alice" has created folder "<folder-name>"
@@ -65,7 +65,7 @@ Feature: upload file
| spaces | /folder ?2.txt | file ?2.txt |
| spaces | /?fi=le&%#2 . txt | # %ab ab?=ed |
@issue-10346
Scenario Outline: upload chunked file with TUS
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "uploaded content" in 3 chunks to "/myChunkedFile.txt" using the TUS protocol on the WebDAV API
@@ -76,7 +76,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: upload 1 byte chunks with TUS
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "0123456789" in 10 chunks to "/myChunkedFile.txt" using the TUS protocol on the WebDAV API
@@ -87,7 +87,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: upload to overwriting a file
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "original content" to "textfile.txt"
@@ -99,7 +99,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: upload a file and no version is available
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "uploaded content" to "/upload.txt" using the TUS protocol on the WebDAV API
@@ -110,7 +110,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: upload a file twice and versions are available
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "uploaded content" to "/upload.txt" using the TUS protocol on the WebDAV API
@@ -123,7 +123,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: upload a file in chunks with TUS and no version is available
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "0123456789" in 10 chunks to "/myChunkedFile.txt" using the TUS protocol on the WebDAV API
@@ -133,7 +133,7 @@ Feature: upload file
| old |
| new |
@issue-10346
Scenario Outline: upload a twice file in chunks with TUS and versions are available
Given using <dav-path-version> DAV path
When user "Alice" uploads file with content "0123456789" in 10 chunks to "/myChunkedFile.txt" using the TUS protocol on the WebDAV API
@@ -146,7 +146,7 @@ Feature: upload file
| new |
| spaces |
@issue-10334
Scenario Outline: upload a file with invalid-name
Given using <dav-path-version> DAV path
When user "Alice" creates a new TUS resource on the WebDAV API with these headers:
@@ -176,7 +176,7 @@ Feature: upload file
| spaces | "my\\file" | bXkMaWxl |
| spaces | ".." | Li4= |
@issue-10346
Scenario Outline: upload a zero-byte file
Given using <dav-path-version> DAV path
When user "Alice" uploads file "filesForUpload/zerobyte.txt" to "textfile.txt" using the TUS protocol on the WebDAV API
@@ -187,7 +187,7 @@ Feature: upload file
| new |
| spaces |
@issue-8003
@issue-8003 @issue-10346
Scenario Outline: replace a file with zero-byte file
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "This is TUS upload" to "textfile.txt"
@@ -199,7 +199,7 @@ Feature: upload file
| new |
| spaces |
@issue-8003
@issue-8003 @issue-10346
Scenario Outline: replace a file inside a folder with zero-byte file
Given using <dav-path-version> DAV path
And user "Alice" has created folder "testFolder"

View File

@@ -6,7 +6,7 @@ Feature: upload file
Background:
Given user "Alice" has been created with default attributes and without skeleton files
@issue-10346
Scenario Outline: upload file with mtime
Given using <dav-path-version> DAV path
When user "Alice" uploads file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2019 04:18:13 GMT" using the TUS protocol on the WebDAV API
@@ -17,7 +17,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: upload file with future mtime
Given using <dav-path-version> DAV path
When user "Alice" uploads file "filesForUpload/textfile.txt" to "file.txt" with mtime "Thu, 08 Aug 2129 04:18:13 GMT" using the TUS protocol on the WebDAV API
@@ -28,7 +28,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: upload a file with mtime in a folder
Given using <dav-path-version> DAV path
And user "Alice" has created folder "testFolder"
@@ -40,7 +40,7 @@ Feature: upload file
| new |
| spaces |
@issue-10346
Scenario Outline: overwriting a file changes its mtime
Given using <dav-path-version> DAV path
And user "Alice" has uploaded file with content "first time upload content" to "file.txt"

View File

@@ -10,7 +10,7 @@ Feature: upload file
| Alice |
| Brian |
@issue-10346
Scenario Outline: upload file with mtime to a received share
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/toShare"
@@ -29,7 +29,7 @@ Feature: upload file
| old |
| new |
@issue-10346
Scenario Outline: upload file with mtime to a send share
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/toShare"
@@ -48,7 +48,7 @@ Feature: upload file
| old |
| new |
@issue-10346
Scenario Outline: overwriting a file with mtime in a received share
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/toShare"
@@ -68,7 +68,7 @@ Feature: upload file
| old |
| new |
@issue-10346
Scenario Outline: overwriting a file with mtime in a send share
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/toShare"

View File

@@ -6,7 +6,7 @@ Feature: move folders
Background:
Given user "Alice" has been created with default attributes and without skeleton files
@issue-10346
Scenario Outline: uploading file into a moved folder
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/test"

View File

@@ -10,7 +10,7 @@ Feature: upload file to shared folder
| Alice |
| Brian |
@issue-10346
Scenario Outline: uploading file to a received share folder
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/FOLDER"
@@ -29,7 +29,7 @@ Feature: upload file to shared folder
| old |
| new |
@issue-10346
Scenario Outline: uploading file to a user read/write share folder works
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/FOLDER"
@@ -48,7 +48,7 @@ Feature: upload file to shared folder
| old |
| new |
@issue-10346
Scenario Outline: uploading a file into a group share as share receiver
Given using <dav-path-version> DAV path
And group "grp1" has been created
@@ -69,7 +69,7 @@ Feature: upload file to shared folder
| old |
| new |
@issue-10346
Scenario Outline: overwrite file to a received share folder
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/FOLDER"
@@ -89,7 +89,7 @@ Feature: upload file to shared folder
| old |
| new |
@issue-10346
Scenario Outline: attempt to upload a file into a folder within correctly received read only share
Given using <dav-path-version> DAV path
And user "Alice" has created folder "/FOLDER"