Merge pull request #9972 from owncloud/tests-editor-without-versions

[tests-only][full-ci] add tests for new role space editor without versions
This commit is contained in:
Prashant Gurung
2024-09-10 09:58:01 +05:45
committed by GitHub
5 changed files with 65 additions and 47 deletions

View File

@@ -16,6 +16,21 @@ use Psr\Http\Message\ResponseInterface;
* A helper class for managing Graph API requests
*/
class GraphHelper {
public const DEFAULT_PERMISSIONS_ROLES = [
'Viewer' => 'b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5',
'Editor' => 'fb6c3e19-e378-47e5-b277-9732f9de6e21',
'File Editor' => '2d00ce52-1fc2-4dbc-8b95-a73b73395f5a',
'Uploader' => '1c996275-f1c9-4e71-abdf-a42f6495e960',
'Space Viewer' => 'a8d5fe5e-96e3-418d-825b-534dbdf22b99',
'Space Editor' => '58c63c02-1d89-4572-916a-870abc5a1b7d',
'Manager' => '312c0871-5ef7-4b3a-85b6-0e4074c64049',
];
public const ADDITIONAL_PERMISSIONS_ROLES = [
'Secure viewer' => 'aa97fe03-7980-45ac-9e50-b325749fd7e6',
'Space Editor Without Versions' => '3284f2d5-0070-4ad8-ac40-c247f7c1fb27',
];
/**
* @return string[]
*/
@@ -1657,31 +1672,13 @@ class GraphHelper {
*
* @throws \Exception
*/
public static function getPermissionsRoleIdByName(
string $permissionsRole
): string {
switch ($permissionsRole) {
case 'Viewer':
return 'b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5';
case 'Space Viewer':
return 'a8d5fe5e-96e3-418d-825b-534dbdf22b99';
case 'Editor':
return 'fb6c3e19-e378-47e5-b277-9732f9de6e21';
case 'Space Editor':
return '58c63c02-1d89-4572-916a-870abc5a1b7d';
case 'File Editor':
return '2d00ce52-1fc2-4dbc-8b95-a73b73395f5a';
case 'Co Owner':
return '3a4ba8e9-6a0d-4235-9140-0e7a34007abe';
case 'Uploader':
return '1c996275-f1c9-4e71-abdf-a42f6495e960';
case 'Manager':
return '312c0871-5ef7-4b3a-85b6-0e4074c64049';
case 'Secure viewer':
return 'aa97fe03-7980-45ac-9e50-b325749fd7e6';
default:
throw new \Exception('Role ' . $permissionsRole . ' not found');
public static function getPermissionsRoleIdByName(string $permissionsRole): string {
$allPermissionsRoles = array_merge(self::DEFAULT_PERMISSIONS_ROLES, self::ADDITIONAL_PERMISSIONS_ROLES);
if (\array_key_exists($permissionsRole, $allPermissionsRoles)) {
return $allPermissionsRoles[$permissionsRole];
}
throw new \Exception("Role '$permissionsRole' not found");
}
/**
@@ -1693,29 +1690,13 @@ class GraphHelper {
*
* @throws \Exception
*/
public static function getPermissionNameByPermissionRoleId(
string $permissionsRoleId
): string {
switch ($permissionsRoleId) {
case 'b1e2218d-eef8-4d4c-b82d-0f1a1b48f3b5':
return 'Viewer';
case 'fb6c3e19-e378-47e5-b277-9732f9de6e21':
return 'Editor';
case '2d00ce52-1fc2-4dbc-8b95-a73b73395f5a':
return 'File Editor';
case '1c996275-f1c9-4e71-abdf-a42f6495e960':
return 'Uploader';
case 'a8d5fe5e-96e3-418d-825b-534dbdf22b99':
return 'Space Viewer';
case '58c63c02-1d89-4572-916a-870abc5a1b7d':
return 'Space Editor';
case '312c0871-5ef7-4b3a-85b6-0e4074c64049':
return 'Manager';
case 'aa97fe03-7980-45ac-9e50-b325749fd7e6':
return 'Secure viewer';
default:
throw new \Exception('Permission role id: ' . $permissionsRoleId . ' not found');
public static function getPermissionNameByPermissionRoleId(string $permissionsRoleId): string {
$allPermissionsRoles = array_merge(self::DEFAULT_PERMISSIONS_ROLES, self::ADDITIONAL_PERMISSIONS_ROLES);
$roleName = array_search($permissionsRoleId, $allPermissionsRoles);
if ($roleName) {
return $roleName;
}
throw new \Exception("Permission role id: '$permissionsRoleId' not found");
}
/**

View File

@@ -24,6 +24,7 @@ use Behat\Behat\Context\Context;
use Behat\Gherkin\Node\TableNode;
use GuzzleHttp\Exception\GuzzleException;
use TestHelpers\OcisConfigHelper;
use TestHelpers\GraphHelper;
use PHPUnit\Framework\Assert;
/**
@@ -75,6 +76,31 @@ class OcisConfigContext implements Context {
);
}
/**
* @Given the administrator has enabled the permissions role :role
*
* @param string $role
*
* @return void
*/
public function theAdministratorHasEnabledTheRole(string $role): void {
$roleId = GraphHelper::getPermissionsRoleIdByName($role);
$defaultRoles = array_values(GraphHelper::DEFAULT_PERMISSIONS_ROLES);
if (!\in_array($role, $defaultRoles)) {
$defaultRoles[] = $roleId;
}
$envs = [
"GRAPH_AVAILABLE_ROLES" => implode(',', $defaultRoles),
];
$response = OcisConfigHelper::reConfigureOcis($envs);
Assert::assertEquals(
200,
$response->getStatusCode(),
"Failed to enable role $role"
);
}
/**
* @Given the config :configVariable has been set to path :path
*

View File

@@ -315,6 +315,7 @@ default:
- FilesVersionsContext:
- SharingNgContext:
- SettingsContext:
- OcisConfigContext:
apiLocks:
paths:

View File

@@ -2248,7 +2248,6 @@ Feature: Send a sharing invitations
| Space Viewer | role not applicable to this resource |
| Space Editor | role not applicable to this resource |
| Manager | role not applicable to this resource |
| Co Owner | Key: 'DriveItemInvite.Roles' Error:Field validation for 'Roles' failed on the 'available_role' tag |
Scenario Outline: try to send share invitation with different re-sharing permissions

View File

@@ -164,3 +164,14 @@ Feature: checking file versions using file id
| source | destination |
| / | folder/ |
| folder/ | / |
@env-config
Scenario: check the versions of a file in a shared space as editor without versions role
Given the administrator has enabled the permissions role "Space Editor Without Versions"
And user "Alice" has sent the following space share invitation:
| space | Project1 |
| sharee | Brian |
| shareType | user |
| permissionsRole | Space Editor Without Versions |
When user "Brian" gets the number of versions of file "/text.txt" using file-id path "/meta/<<FILEID>>/v"
Then the HTTP status code should be "403"