add test to download files and folders as archive

Signed-off-by: prashant-gurung899 <prasantgrg777@gmail.com>
This commit is contained in:
prashant-gurung899
2024-12-06 09:59:57 +05:45
parent e22c355641
commit 367f55109f
2 changed files with 55 additions and 9 deletions

View File

@@ -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;

View File

@@ -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 | |