mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-31 01:10:20 -06:00
add tests for uploading the zero-byte via tus and webdav api
Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
This commit is contained in:
@@ -95,6 +95,25 @@ class SpacesTUSContext implements Context {
|
||||
$this->featureContext->setLastUploadDeleteTime(\time());
|
||||
}
|
||||
|
||||
/**
|
||||
* @When the public uploads a file from :source to :destination via TUS inside last link shared folder with password :password using the WebDAV API
|
||||
*
|
||||
* @param string $source
|
||||
* @param string $destination
|
||||
* @param string $password
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function publicUploadsAFileViaTusInsideOfTheSpaceUsingTheWebdavApi(
|
||||
string $source,
|
||||
string $destination,
|
||||
string $password
|
||||
): void {
|
||||
$this->tusContext->publicUploadFileUsingTus($source, $destination, $password);
|
||||
$this->featureContext->setLastUploadDeleteTime(\time());
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given user :user has created a new TUS resource in the space :spaceName with the following headers:
|
||||
*
|
||||
|
||||
@@ -344,6 +344,44 @@ class TUSContext implements Context {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $source
|
||||
* @param string $destination
|
||||
* @param string|null $password
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function publicUploadFileUsingTus(
|
||||
string $source,
|
||||
string $destination,
|
||||
?string $password,
|
||||
):void {
|
||||
$password = $this->featureContext->getActualPassword($password);
|
||||
if ($this->featureContext->isUsingSharingNG()) {
|
||||
$token = $this->featureContext->shareNgGetLastCreatedLinkShareToken();
|
||||
} else {
|
||||
$token = $this->featureContext->getLastCreatedPublicShareToken();
|
||||
}
|
||||
$headers = [
|
||||
'Authorization' => 'Basic ' . \base64_encode("public" . ':' . $password),
|
||||
];
|
||||
$sourceFile = $this->featureContext->acceptanceTestsDirLocation() . $source;
|
||||
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $token, "public-files");
|
||||
$url = $davPath;
|
||||
|
||||
$client = new Client(
|
||||
$this->featureContext->getBaseUrl(),
|
||||
[
|
||||
'verify' => false,
|
||||
'headers' => $headers
|
||||
]
|
||||
);
|
||||
|
||||
$client->setApiPath($url);
|
||||
$client->setKey((string)rand())->file($sourceFile, $destination);
|
||||
$client->file($sourceFile, $destination)->createWithUpload("", 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @When user :user uploads file with content :content to :destination using the TUS protocol on the WebDAV API
|
||||
*
|
||||
|
||||
@@ -2763,4 +2763,57 @@ Feature: Create a link share for a resource
|
||||
| permissions-role |
|
||||
| Space Viewer |
|
||||
| Space Editor |
|
||||
| Manager |
|
||||
| Manager |
|
||||
|
||||
@issue-10649
|
||||
Scenario: public uploads a zero byte file to a public share folder
|
||||
Given using spaces DAV path
|
||||
And using SharingNG
|
||||
And user "Alice" has created folder "/uploadFolder"
|
||||
And user "Alice" has created the following resource link share:
|
||||
| resource | uploadFolder |
|
||||
| space | Personal |
|
||||
| permissionsRole | createOnly |
|
||||
| password | %public% |
|
||||
When the public uploads file "filesForUpload/zerobyte.txt" to "textfile.txt" inside last link shared folder with password "%public%" using the public WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" folder "uploadFolder" of the space "Personal" should contain these files:
|
||||
| textfile.txt |
|
||||
And for user "Alice" folder "uploadFolder" of the space "Personal" should not contain these files:
|
||||
| textfile (1).txt |
|
||||
|
||||
@issue-10649
|
||||
Scenario: public uploads a zero byte file to a public share folder inside project space
|
||||
Given using spaces DAV path
|
||||
And using SharingNG
|
||||
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
|
||||
And user "Alice" has created a folder "/uploadFolder" in space "Project"
|
||||
And user "Alice" has created the following resource link share:
|
||||
| resource | uploadFolder |
|
||||
| space | Project |
|
||||
| permissionsRole | createOnly |
|
||||
| password | %public% |
|
||||
When the public uploads file "filesForUpload/zerobyte.txt" to "textfile.txt" inside last link shared folder with password "%public%" using the public WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" folder "uploadFolder" of the space "Project" should contain these files:
|
||||
| textfile.txt |
|
||||
And for user "Alice" folder "uploadFolder" of the space "Project" should not contain these files:
|
||||
| textfile (1).txt |
|
||||
|
||||
@issue-10649
|
||||
Scenario: public uploads a zero byte file to a public share project space
|
||||
Given using spaces DAV path
|
||||
And using SharingNG
|
||||
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
|
||||
And user "Alice" has created the following space link share:
|
||||
| space | Project |
|
||||
| permissionsRole | createOnly |
|
||||
| password | %public% |
|
||||
When the public uploads file "filesForUpload/zerobyte.txt" to "textfile.txt" inside last link shared folder with password "%public%" using the public WebDAV API
|
||||
Then the HTTP status code should be "201"
|
||||
And for user "Alice" the space "Project" should contain these files:
|
||||
| textfile.txt |
|
||||
And for user "Alice" the space "Project" should not contain these files:
|
||||
| textfile (1).txt |
|
||||
|
||||
@@ -144,3 +144,53 @@ Feature: upload resources using TUS protocol
|
||||
When user "Brian" 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 "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-10649
|
||||
Scenario: public uploads a zero byte file to a public share folder
|
||||
Given using spaces DAV path
|
||||
And using SharingNG
|
||||
And user "Alice" has created folder "/uploadFolder"
|
||||
And user "Alice" has created the following resource link share:
|
||||
| resource | uploadFolder |
|
||||
| space | Personal |
|
||||
| permissionsRole | createOnly |
|
||||
| password | %public% |
|
||||
When the public uploads a file from "filesForUpload/zerobyte.txt" to "textfile.txt" via TUS inside last link shared folder with password "%public%" using the WebDAV API
|
||||
And for user "Alice" folder "uploadFolder" of the space "Personal" should contain these files:
|
||||
| textfile.txt |
|
||||
And for user "Alice" folder "uploadFolder" of the space "Personal" should not contain these files:
|
||||
| textfile (1).txt |
|
||||
|
||||
@issue-10346
|
||||
Scenario: public uploads a zero-byte file to a shared folder inside project space
|
||||
Given using spaces DAV path
|
||||
And using SharingNG
|
||||
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
|
||||
And user "Alice" has created a folder "/uploadFolder" in space "Project"
|
||||
And user "Alice" has created the following resource link share:
|
||||
| resource | uploadFolder |
|
||||
| space | Project |
|
||||
| permissionsRole | createOnly |
|
||||
| password | %public% |
|
||||
When the public uploads a file from "filesForUpload/zerobyte.txt" to "textfile.txt" via TUS inside last link shared folder with password "%public%" using the WebDAV API
|
||||
And for user "Alice" folder "uploadFolder" of the space "Project" should contain these files:
|
||||
| textfile.txt |
|
||||
And for user "Alice" folder "uploadFolder" of the space "Project" should not contain these files:
|
||||
| textfile (1).txt |
|
||||
|
||||
@issue-10649
|
||||
Scenario: public uploads a zero-byte file to a public share project space
|
||||
Given using spaces DAV path
|
||||
And using SharingNG
|
||||
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
|
||||
And user "Alice" has created the following space link share:
|
||||
| space | Project |
|
||||
| permissionsRole | createOnly |
|
||||
| password | %public% |
|
||||
When the public uploads a file from "filesForUpload/zerobyte.txt" to "textfile.txt" via TUS inside last link shared folder with password "%public%" using the WebDAV API
|
||||
Then for user "Alice" the space "Project" should contain these files:
|
||||
| textfile.txt |
|
||||
And for user "Alice" the space "Project" should not contain these files:
|
||||
| textfile (1).txt |
|
||||
|
||||
Reference in New Issue
Block a user