added tests for reading content of a file by fileId using WebDav API (#6958)

This commit is contained in:
Prajwol Amatya
2023-08-18 09:58:25 +05:45
committed by GitHub
parent 809c64f823
commit 84bc7d88e2
4 changed files with 123 additions and 6 deletions

View File

@@ -219,6 +219,13 @@ default:
- FeatureContext: *common_feature_context_params
- OcisConfigContext:
apiSpacesDavOperation:
paths:
- '%paths.base%/../features/apiSpacesDavOperation'
context: *common_ldap_suite_context
contexts:
- FeatureContext: *common_feature_context_params
extensions:
rdx\behatvars\BehatVariablesExtension: ~

View File

@@ -0,0 +1,108 @@
Feature: accessing files using file id
As a user
I want to access the files using file id
So that I can get the content of a file
Background:
Given using spaces DAV path
And user "Alice" has been created with default attributes and without skeleton files
Scenario Outline: get content of a file
Given user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
When user "Alice" sends HTTP method "GET" to URL "<dav-path>"
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>> |
Scenario Outline: get content of a file inside a folder
Given user "Alice" has created folder "uploadFolder"
And user "Alice" has uploaded file with content "some data" to "uploadFolder/textfile.txt"
And we save it into "FILEID"
When user "Alice" sends HTTP method "GET" to URL "<dav-path>"
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>> |
Scenario Outline: get content of a file inside a 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 "new-space" with the default quota using the GraphApi
And user "Alice" has uploaded a file inside space "new-space" with content "some data" to "textfile.txt"
And we save it into "FILEID"
When user "Alice" sends HTTP method "GET" to URL "<dav-path>"
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>> |
Scenario Outline: sharee gets content of a shared file
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
And user "Alice" has shared file "/textfile.txt" with user "Brian"
And user "Brian" has accepted share "/textfile.txt" offered by user "Alice"
When user "Brian" sends HTTP method "GET" to URL "<dav-path>"
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>> |
Scenario Outline: sharee gets content of a file inside a shared folder
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has created folder "uploadFolder"
And user "Alice" has uploaded file with content "some data" to "uploadFolder/textfile.txt"
And we save it into "FILEID"
And user "Alice" has shared folder "/uploadFolder" with user "Brian"
And user "Brian" has accepted share "/uploadFolder" offered by user "Alice"
When user "Brian" sends HTTP method "GET" to URL "<dav-path>"
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>> |
Scenario Outline: sharee gets content of a file inside a shared space
Given user "Brian" has been created with default attributes and without skeleton files
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 GraphApi
And user "Alice" has uploaded a file inside space "new-space" with content "some data" to "textfile.txt"
And we save it into "FILEID"
And user "Alice" has shared a space "new-space" with settings:
| shareWith | Brian |
| role | viewer |
When user "Brian" sends HTTP method "GET" to URL "<dav-path>"
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>> |
Scenario Outline: user tries to get content of file owned by others
Given user "Brian" has been created with default attributes and without skeleton files
And user "Alice" has uploaded file with content "some data" to "/textfile.txt"
And we save it into "FILEID"
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>> |

View File

@@ -1160,7 +1160,7 @@ class SpacesContext implements Context {
* @param string $content
* @param string $destination
*
* @return void
* @return string[]
* @throws GuzzleException
* @throws Exception
*/
@@ -1169,9 +1169,9 @@ class SpacesContext implements Context {
string $spaceName,
string $content,
string $destination
): void {
): array {
$this->setSpaceIDByName($user, $spaceName);
$this->featureContext->uploadFileWithContent($user, $content, $destination);
return $this->featureContext->uploadFileWithContent($user, $content, $destination);
}
/**
@@ -1785,7 +1785,7 @@ class SpacesContext implements Context {
* @param string $fileContent
* @param string $destination
*
* @return void
* @return string[]
* @throws GuzzleException
*/
public function userHasUploadedFile(
@@ -1793,10 +1793,11 @@ class SpacesContext implements Context {
string $spaceName,
string $fileContent,
string $destination
): void {
): array {
$this->theUserListsAllHisAvailableSpacesUsingTheGraphApi($user);
$this->theUserUploadsAFileToSpace($user, $spaceName, $fileContent, $destination);
$fileId = $this->theUserUploadsAFileToSpace($user, $spaceName, $fileContent, $destination);
$this->featureContext->theHTTPStatusCodeShouldBeOr(201, 204);
return $fileId;
}
/**