diff --git a/tests/acceptance/features/apiGraph/changeRole.feature b/tests/acceptance/features/apiGraph/changeRole.feature new file mode 100644 index 0000000000..bdc03d4ad5 --- /dev/null +++ b/tests/acceptance/features/apiGraph/changeRole.feature @@ -0,0 +1,48 @@ +@api +Feature: change role + As an admin + I want to change the role of user + So that I can manage the role of user + + Background: + Given user "Alice" has been created with default attributes and without skeleton files + + + Scenario Outline: admin user changes the role of another user with different roles + Given user "Brian" has been created with default attributes and without skeleton files + And the administrator has assigned the role "Admin" to user "Alice" using the Graph API + And the administrator has assigned the role "" to user "Brian" using the Graph API + When user "Alice" changes the role of user "Brian" to role "" using the Graph API + Then the HTTP status code should be "201" + And user "Brian" should have the role "" + Examples: + | userRole | newRole | + | Admin | Admin | + | Admin | Space Admin | + | Admin | User | + | Admin | Guest | + | Space Admin | Admin | + | Space Admin | Space Admin | + | Space Admin | User | + | Space Admin | Guest | + | User | Admin | + | User | Space Admin | + | User | User | + | User | Guest | + | Guest | Admin | + | Guest | Space Admin | + | Guest | User | + | Guest | Guest | + + + Scenario Outline: admin user tries to change his/her own role + Given the administrator has assigned the role "Admin" to user "Alice" using the Graph API + When user "Alice" tries to change the role of user "Alice" to role "" using the Graph API + Then the HTTP status code should be "403" + And user "Alice" should have the role "Admin" + Examples: + | newRole | + | Space Admin | + | User | + | Guest | + | Admin | diff --git a/tests/acceptance/features/bootstrap/GraphContext.php b/tests/acceptance/features/bootstrap/GraphContext.php index 940520b649..11480fbd5e 100644 --- a/tests/acceptance/features/bootstrap/GraphContext.php +++ b/tests/acceptance/features/bootstrap/GraphContext.php @@ -2510,4 +2510,37 @@ class GraphContext implements Context { . "\nExpected user '$user' to have no roles assigned but got '" . json_encode($jsonDecodedResponse) . "'" ); } + + /** + * @When user :user changes the role of user :ofUser to role :role using the Graph API + * @When user :user tries to change the role of user :ofUser to role :role using the Graph API + * + * @param string $user + * @param string $ofUser + * @param string $role + * + * @return void + * + * @throws GuzzleException + * @throws Exception + */ + public function userChangesTheRoleOfUserToRoleUsingTheGraphApi(string $user, string $ofUser, string $role): void { + $userId = $this->featureContext->getAttributeOfCreatedUser($ofUser, 'id') ?? $ofUser; + $credentials = $this->getAdminOrUserCredentials($user); + if (empty($this->appEntity)) { + $this->setApplicationEntity(); + } + + $this->featureContext->setResponse( + GraphHelper::assignRole( + $this->featureContext->getBaseUrl(), + $this->featureContext->getStepLineRef(), + $credentials['username'], + $credentials['password'], + $this->appEntity["appRoles"][$role], + $this->appEntity["id"], + $userId + ) + ); + } }