Skip to content

Commit

Permalink
add test for downloading space
Browse files Browse the repository at this point in the history
  • Loading branch information
Salipa-Gurung committed Jun 30, 2023
1 parent da2f8b2 commit d668d38
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 0 deletions.
27 changes: 27 additions & 0 deletions tests/acceptance/features/apiSpaces/space_download.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
@api
Feature: Download space
As a user
I want to be able to download space
so that I can have it in my local storage


Scenario: user downloads a space
Given these users have been created with default attributes and without skeleton files:
| username |
| Alice |
And using spaces DAV path
And the administrator has assigned the role "Space Admin" to user "Alice" using the Graph API
And user "Alice" has created a space "download space" with the default quota using the GraphApi
And user "Alice" has uploaded a file inside space "download space" with content "<content>" to "<name>"
# And user "Alice" has created a folder "folder1" in space "download space"
When user "Alice" downloads the space "download space" using the WebDAV API
Then the downloaded "tar" archive should contain these files:
| name | content |
| file1.txt | some data |
| file2.txt | other data |
| file3.txt | more data |
# Then the space "download space" should contain these resources:
# | name | content |
# | file1.txt | some data |
# | file2.txt | other data |
# | file3.txt | more data |
2 changes: 2 additions & 0 deletions tests/acceptance/features/bootstrap/ArchiverContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ public function userDownloadsTheArchiveOfTheseItems(
public function theDownloadedArchiveShouldContainTheseFiles(string $type, TableNode $expectedFiles):void {
$this->featureContext->verifyTableNodeColumns($expectedFiles, ['name', 'content']);
$tempFile = \tempnam(\sys_get_temp_dir(), 'OcAcceptanceTests_');
echo($tempFile);
print_r(scandir(\sys_get_temp_dir()));
\unlink($tempFile); // we only need the name
$tempFile = $tempFile . '.' . $type; // it needs the extension
\file_put_contents($tempFile, $this->featureContext->getResponse()->getBody()->getContents());
Expand Down
78 changes: 78 additions & 0 deletions tests/acceptance/features/bootstrap/SpacesContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
use TestHelpers\SetupHelper;
use TestHelpers\GraphHelper;
use PHPUnit\Framework\Assert;
use wapmorgan\UnifiedArchive\Exceptions\NonExistentArchiveFileException;
use wapmorgan\UnifiedArchive\UnifiedArchive;

require_once 'bootstrap.php';

Expand Down Expand Up @@ -3180,4 +3182,80 @@ public function theUserShouldHaveSpaceWithRecipient(
}
Assert::assertTrue($foundRoleInResponse, "the response does not contain the $recipientType $recipient");
}

/**
* @When /^user "([^"]*)" downloads the space "([^"]*)" using the WebDAV API/
*
* @param string $user
* @param string $spaceName
* @throws Exception
* @throws GuzzleException
*/
public function userDownloadsTheSpaceUsingTheWebdavApi(string $user, string $spaceName)
{
echo $user;
echo $spaceName."\n";
$space = $this->getSpaceByName($user, $spaceName);
echo $space["id"] ."\n";
$url = $this->featureContext->getBaseUrl() . '/archiver?id=' . $space["id"];
echo $url ."\n";
$response = HttpRequestHelper::get(
$url,
'',
$user,
$this->featureContext->getPasswordForUser($user),
);
echo $response->getStatusCode()."\n";
echo $response->getBody()->getContents()."\n";
$this->featureContext->setResponse(
HttpRequestHelper::get(
$url,
'',
$user,
$this->featureContext->getPasswordForUser($user),
)
);
// $res = $this->featureContext->getResponse();
// echo $res->getBody()->getContents();
// print_r(scandir(\sys_get_temp_dir()));
}

/**
* @Then /^the downloaded "([^"]*)" archive should contain these files:/
*
* @param string $type
* @param TableNode $expectedFiles
*/
public function theDownloadedTarArchiveShouldContainTheseFiles(string $type, TableNode $expectedFiles)
{
$res = $this->featureContext->getResponse();
echo $res->getBody()->getContents();

$tempFile = \tempnam(\sys_get_temp_dir(), 'OcAcceptanceTests_');
echo($tempFile."\n");
// print_r(scandir(\sys_get_temp_dir()));
\unlink($tempFile); // we only need the name
$tempFile = $tempFile . '.' . $type; // it needs the extension
\file_put_contents($tempFile, $this->featureContext->getResponse()->getBody()->getContents());
echo $tempFile;
// $archive = new PharData($tempFile.".tar");
// foreach($archive as $file) {
// echo "$file\n";
// }
// $archive = UnifiedArchive::open($tempFile);
// foreach ($expectedFiles->getHash() as $expectedFile) {
// echo $expectedFiles;
// echo $expectedFile['content'];
// echo ($archive->getFileContent($expectedFile['name']));
// Assert::assertEquals(
// $expectedFile['content'],
// $archive->getFileContent($expectedFile['name']),
// __METHOD__ .
// " content of '" . $expectedFile['name'] . "' not as expected"
// );
// }
\unlink($tempFile);
}


}

0 comments on commit d668d38

Please sign in to comment.