mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-04-04 15:43:54 -04:00
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:
10
.drone.star
10
.drone.star
@@ -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,
|
||||
],
|
||||
},
|
||||
] +
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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" => [
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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$/
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
381
tests/acceptance/expected-failures-without-remotephp.md
Normal file
381
tests/acceptance/expected-failures-without-remotephp.md
Normal 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.
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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<$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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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>> |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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>> |
|
||||
|
||||
@@ -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>> |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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% |
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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>> |
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user