add test to upload via TUS by federated user

Signed-off-by: prashant-gurung899 <prasantgrg777@gmail.com>
This commit is contained in:
prashant-gurung899
2024-11-22 09:47:08 +05:45
parent 271455703b
commit e40015c2e2
7 changed files with 150 additions and 26 deletions
+66 -3
View File
@@ -254,6 +254,38 @@ class SpacesContext implements Context {
return $space["id"];
}
/**
* @param string $user
* @param string $share
*
* @return string
*
* @throws Exception|GuzzleException
*/
public function getSharesRemoteItemId(string $user, string $share): string {
$credentials = $this->featureContext->graphContext->getAdminOrUserCredentials($user);
$response = GraphHelper::getSharesSharedWithMe(
$this->featureContext->getBaseUrl(),
$this->featureContext->getStepLineRef(),
$credentials['username'],
$credentials['password']
);
$jsonBody = $this->featureContext->getJsonDecodedResponseBodyContent($response);
// Search remoteItem ID of a given share
foreach ($jsonBody->value as $item) {
if (isset($item->name) && $item->name === $share) {
if (isset($item->remoteItem->id)) {
return $item->remoteItem->id;
}
throw new Exception("Failed to find remoteItem ID for share: $share");
}
}
throw new Exception("Cannot find share: $share");
}
/**
* The method finds file by fileName and spaceName and returns data of file which contains in responseHeader
* fileName contains the path, if the file is in the folder
@@ -261,14 +293,23 @@ class SpacesContext implements Context {
* @param string $user
* @param string $spaceName
* @param string $fileName
* @param bool $federatedShare
*
* @return ResponseInterface
* @throws GuzzleException
*/
public function getFileData(string $user, string $spaceName, string $fileName): ResponseInterface {
$space = $this->getSpaceByName($user, $spaceName);
public function getFileData(string $user, string $spaceName, string $fileName, bool $federatedShare = false): ResponseInterface {
$baseUrl = $this->featureContext->getBaseUrl();
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $space["id"]);
if ($federatedShare) {
$remoteItemId = $this->getSharesRemoteItemId($user, $spaceName);
$spaceId = \rawurlencode($remoteItemId);
} else {
$space = $this->getSpaceByName($user, $spaceName);
$spaceId = $space["id"];
}
$davPath = WebdavHelper::getDavPath(WebDavHelper::DAV_VERSION_SPACES, $spaceId);
$fullUrl = "$baseUrl/$davPath/$fileName";
return HttpRequestHelper::get(
@@ -874,6 +915,28 @@ class SpacesContext implements Context {
Assert::assertEquals($fileContent, $actualFileContent, "$file does not contain $fileContent");
}
/**
* @Then /^for user "([^"]*)" the content of file "([^"]*)" of federated share "([^"]*)" should be "([^"]*)"$/
*
* @param string $user
* @param string $file
* @param string $share
* @param string $fileContent
*
* @return void
*
* @throws Exception|GuzzleException
*/
public function forUserTheContentOfFileOfFederatedShareShouldBe(
string $user,
string $file,
string $share,
string $fileContent
): void {
$actualFileContent = $this->getFileData($user, $share, $file, true)->getBody()->getContents();
Assert::assertEquals($fileContent, $actualFileContent, "File content did not match");
}
/**
* @Then /^the JSON response should contain space called "([^"]*)" (?:|(?:owned by|granted to) "([^"]*)" )(?:|(?:with description file|with space image) "([^"]*)" )and match$/
*