mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-02 10:21:07 -06:00
add test to download files and folders as archive
Signed-off-by: prashant-gurung899 <prasantgrg777@gmail.com>
This commit is contained in:
@@ -43,6 +43,7 @@ class ArchiverContext implements Context {
|
||||
* @var FeatureContext
|
||||
*/
|
||||
private FeatureContext $featureContext;
|
||||
private SpacesContext $spacesContext;
|
||||
|
||||
/**
|
||||
* @BeforeScenario
|
||||
@@ -58,6 +59,7 @@ class ArchiverContext implements Context {
|
||||
$environment = $scope->getEnvironment();
|
||||
// Get all the contexts you need in this context
|
||||
$this->featureContext = BehatHelper::getContext($scope, $environment, 'FeatureContext');
|
||||
$this->spacesContext = BehatHelper::getContext($scope, $environment, 'SpacesContext');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -120,13 +122,15 @@ class ArchiverContext implements Context {
|
||||
case 'id':
|
||||
case 'ids':
|
||||
return 'id=' . $this->featureContext->getFileIdForPath($user, $resource);
|
||||
case 'remoteItemIds':
|
||||
return 'id=' . $this->spacesContext->getSharesRemoteItemId($user, $resource);
|
||||
case 'path':
|
||||
case 'paths':
|
||||
return 'path=' . $resource;
|
||||
default:
|
||||
throw new Exception(
|
||||
'"' . $addressType .
|
||||
'" is not a legal value for $addressType, must be id|ids|path|paths'
|
||||
'" is not a legal value for $addressType, must be id|ids|remoteItemIds|path|paths'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -276,7 +280,7 @@ class ArchiverContext implements Context {
|
||||
$tar = $this->getArchiveClass($type);
|
||||
$tar->open($tempFile);
|
||||
$archiveData = $tar->contents();
|
||||
|
||||
|
||||
// extract the archive
|
||||
$tar->open($tempFile);
|
||||
$tar->extract($tempExtractFolder);
|
||||
@@ -291,13 +295,22 @@ class ArchiverContext implements Context {
|
||||
|
||||
if ($expectedPath === $actualPath) {
|
||||
if (!$info->getIsdir()) {
|
||||
$fileContent = \file_get_contents("$tempExtractFolder/$actualPath");
|
||||
Assert::assertEquals(
|
||||
$expectedItem['content'],
|
||||
$fileContent,
|
||||
__METHOD__ .
|
||||
" content of '" . $expectedPath . "' not as expected"
|
||||
);
|
||||
$fileFullPath = "$tempExtractFolder/$actualPath";
|
||||
$fileMimeType = \mime_content_type($fileFullPath);
|
||||
|
||||
if ($fileMimeType === "text/plain") {
|
||||
$fileContent = \file_get_contents($fileFullPath);
|
||||
Assert::assertEquals(
|
||||
$expectedItem['content'],
|
||||
$fileContent,
|
||||
__METHOD__ . " content of '" . $expectedPath . "' not as expected"
|
||||
);
|
||||
} else {
|
||||
Assert::assertFileExists(
|
||||
$fileFullPath,
|
||||
__METHOD__ . " File '" . $expectedPath . "' is not in the downloaded archive."
|
||||
);
|
||||
}
|
||||
}
|
||||
$found = true;
|
||||
break;
|
||||
|
||||
@@ -1297,3 +1297,36 @@ Feature: an user shares resources using ScienceMesh application
|
||||
| Viewer |
|
||||
| Uploader |
|
||||
| Editor |
|
||||
|
||||
@issue-10272
|
||||
Scenario: federated user downloads shared resources as an archive
|
||||
Given using spaces DAV path
|
||||
And using server "REMOTE"
|
||||
And "Brian" has created the federation share invitation
|
||||
And using server "LOCAL"
|
||||
And "Alice" has accepted invitation
|
||||
And user "Alice" has uploaded file with content "some data" to "textfile.txt"
|
||||
And user "Alice" has created folder "imageFolder"
|
||||
And user "Alice" has uploaded file "filesForUpload/testavatar.png" to "imageFolder/testavatar.png"
|
||||
And user "Alice" has sent the following resource share invitation to federated user:
|
||||
| resource | textfile.txt |
|
||||
| space | Personal |
|
||||
| sharee | Brian |
|
||||
| shareType | user |
|
||||
| permissionsRole | Viewer |
|
||||
And user "Alice" has sent the following resource share invitation to federated user:
|
||||
| resource | imageFolder |
|
||||
| space | Personal |
|
||||
| sharee | Brian |
|
||||
| shareType | user |
|
||||
| permissionsRole | Viewer |
|
||||
And using server "REMOTE"
|
||||
When user "Brian" downloads the archive of these items using the resource remoteItemIds
|
||||
| textfile.txt |
|
||||
| imageFolder |
|
||||
Then the HTTP status code should be "200"
|
||||
And the downloaded zip archive should contain these files:
|
||||
| name | content |
|
||||
| textfile.txt | some data |
|
||||
| imageFolder | |
|
||||
| imageFolder/testavatar.png | |
|
||||
|
||||
Reference in New Issue
Block a user