mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-12 14:30:19 -05:00
Adds api tests to download folder from public link
This commit is contained in:
committed by
Phil Davis
parent
2322d3a1d0
commit
7dbfcf63e0
@@ -73,6 +73,7 @@ default:
|
||||
- WebDavPropertiesContext:
|
||||
- TUSContext:
|
||||
- SpacesTUSContext:
|
||||
- ArchiverContext:
|
||||
|
||||
apiContract:
|
||||
paths:
|
||||
|
||||
@@ -79,5 +79,8 @@ The expected failures in this file are from features in the owncloud/ocis repo.
|
||||
- [apiCors/cors.feature:67](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCors/cors.feature#L67)
|
||||
- [apiCors/cors.feature:68](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiCors/cors.feature#L68)
|
||||
|
||||
#### [Public cannot download folder via the public link of the folder inside the project space](https://github.com/owncloud/ocis/issues/5229)
|
||||
- [apiSpacesShares/publicLinkDownload.feature:31](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSpacesShares/publicLinkDownload.feature#L31)
|
||||
|
||||
#### [A User can get information of another user with Graph API](https://github.com/owncloud/ocis/issues/5125)
|
||||
- [apiGraph/getUser.feature:23](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiGraph/getUser.feature#L23)
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
@api @skipOnOcV10
|
||||
Feature: Public can download folders from project space public link
|
||||
As a public
|
||||
I want to be able to download folder from public link
|
||||
So that I can gain access to it's contents
|
||||
|
||||
Background:
|
||||
Given these users have been created with default attributes and without skeleton files:
|
||||
| username |
|
||||
| Alice |
|
||||
| Brian |
|
||||
And using spaces DAV path
|
||||
And the administrator has given "Alice" the role "Space Admin" using the settings api
|
||||
And user "Alice" has created a space "new-space" with the default quota using the GraphApi
|
||||
|
||||
|
||||
Scenario: download a folder from public link of a space
|
||||
Given user "Alice" has created a public link share of the space "new-space" with settings:
|
||||
| permissions | 1 |
|
||||
| name | someName |
|
||||
And user "Alice" has created a folder "NewFolder" in space "new-space"
|
||||
And user "Alice" has uploaded a file inside space "new-space" with content "some content" to "NewFolder/test.txt"
|
||||
When public downloads the folder "NewFolder" of space "new-space" from the last created public link of "Alice" using the resource id
|
||||
Then the HTTP status code should be "200"
|
||||
And the downloaded tar archive should contain these files:
|
||||
| name | content |
|
||||
| NewFolder/test.txt | some content |
|
||||
|
||||
@issue-5229
|
||||
Scenario: download a folder from public link of a folder inside a space
|
||||
Given user "Alice" has created a folder "NewFolder" in space "new-space"
|
||||
And user "Alice" has created a folder "NewFolder/folder" in space "new-space"
|
||||
And user "Alice" has uploaded a file inside space "new-space" with content "some content" to "NewFolder/folder/test.txt"
|
||||
And user "Alice" has created a public link share inside of space "new-space" with settings:
|
||||
| path | NewFolder |
|
||||
| shareType | 3 |
|
||||
| permissions | 1 |
|
||||
| name | public link |
|
||||
When public downloads the folder "NewFolder/folder" of space "new-space" from the last created public link of "Alice" using the resource id
|
||||
Then the HTTP status code should be "200"
|
||||
And the downloaded tar archive should contain these files:
|
||||
| name | content |
|
||||
| folder/test.txt | some content |
|
||||
@@ -73,6 +73,12 @@ class SpacesContext implements Context {
|
||||
* @var FilesVersionsContext
|
||||
*/
|
||||
private FilesVersionsContext $filesVersionsContext;
|
||||
|
||||
/**
|
||||
* @var ArchiverContext
|
||||
*/
|
||||
private ArchiverContext $archiverContext;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
@@ -457,6 +463,7 @@ class SpacesContext implements Context {
|
||||
$this->favoritesContext = $environment->getContext('FavoritesContext');
|
||||
$this->checksumContext = $environment->getContext('ChecksumContext');
|
||||
$this->filesVersionsContext = $environment->getContext('FilesVersionsContext');
|
||||
$this->archiverContext = $environment->getContext('ArchiverContext');
|
||||
// Run the BeforeScenario function in OCSContext to set it up correctly
|
||||
$this->ocsContext->before($scope);
|
||||
$this->baseUrl = \trim($this->featureContext->getBaseUrl(), "/");
|
||||
@@ -3088,4 +3095,29 @@ class SpacesContext implements Context {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^public downloads the folder "([^"]*)" of space "([^"]*)" from the last created public link of "([^"]*)" using the resource id$/
|
||||
* @param string $resource
|
||||
* @param string $space
|
||||
* @param string $owner
|
||||
*
|
||||
* @return void
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function publicDownloadsTheFolderFromTheLastCreatedPublicLink(string $resource, string $space, string $owner)
|
||||
{
|
||||
$token = $this->featureContext->getLastPublicShareToken();
|
||||
$resourceId = $this->getFolderId($owner, $space, $resource);
|
||||
$queryString = 'public-token='.$token.'&id='.$resourceId;
|
||||
$this->featureContext->setResponse(
|
||||
HttpRequestHelper::get(
|
||||
$this->featureContext->getBaseUrl() . '/archiver?' . $queryString,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user