backport from main (#7837)

This commit is contained in:
Sabin Panta
2023-11-30 09:56:12 +05:45
committed by GitHub
parent b71a50065d
commit 26423fa5fb
3 changed files with 35 additions and 185 deletions

View File

@@ -360,14 +360,16 @@ class GraphContext implements Context {
/**
* remove user from group
*
* @param string $groupId
* @param string $userId
* @param string $group
* @param string $user
* @param string|null $byUser
*
* @return ResponseInterface
* @throws GuzzleException
*/
public function removeUserFromGroup(string $groupId, string $userId, ?string $byUser = null): ResponseInterface {
public function removeUserFromGroup(string $group, string $user, ?string $byUser = null): ResponseInterface {
$groupId = $this->featureContext->getAttributeOfCreatedGroup($group, "id") ?: WebDavHelper::generateUUIDv4();
$userId = $this->featureContext->getAttributeOfCreatedUser($user, "id");
$credentials = $this->getAdminOrUserCredentials($byUser);
return GraphHelper::removeUserFromGroup(
$this->featureContext->getBaseUrl(),
@@ -453,11 +455,8 @@ class GraphContext implements Context {
*/
public function adminHasRemovedUserFromGroupUsingTheGraphApi(string $user, string $group): void {
$user = $this->featureContext->getActualUsername($user);
$groupId = $this->featureContext->getAttributeOfCreatedGroup($group, "id");
$userId = $this->featureContext->getAttributeOfCreatedUser($user, "id");
$response = $this->removeUserFromGroup($groupId, $userId);
$this->featureContext->setResponse($response);
$this->featureContext->thenTheHTTPStatusCodeShouldBe(204);
$response = $this->removeUserFromGroup($group, $user);
$this->featureContext->TheHTTPStatusCodeShouldBe(204, '', $response);
}
/**
@@ -1194,29 +1193,12 @@ class GraphContext implements Context {
$usersGroups = $table->getColumnsHash();
foreach ($usersGroups as $userGroup) {
$groupId = $this->featureContext->getAttributeOfCreatedGroup($userGroup['groupname'], "id");
$userId = $this->featureContext->getAttributeOfCreatedUser($userGroup['username'], "id");
$this->featureContext->setResponse($this->removeUserFromGroup($groupId, $userId));
$this->featureContext->setResponse($this->removeUserFromGroup($userGroup['groupname'], $userGroup['username']));
$this->featureContext->pushToLastHttpStatusCodesArray();
}
}
/**
* @When the administrator removes user :user from group :group using the Graph API
*
* @param string $user
* @param string $group
*
* @return void
*/
public function theAdministratorTriesToRemoveUserFromGroupUsingTheGraphAPI(string $user, string $group): void {
$groupId = $this->featureContext->getAttributeOfCreatedGroup($group, "id");
$userId = $this->featureContext->getAttributeOfCreatedUser($user, "id");
$this->featureContext->setResponse($this->removeUserFromGroup($groupId, $userId));
}
/**
* @When the administrator tries to remove user :user from group :group using the Graph API
* @When user :byUser tries to remove user :user from group :group using the Graph API
*
* @param string $user
@@ -1227,9 +1209,7 @@ class GraphContext implements Context {
* @throws Exception | GuzzleException
*/
public function theUserTriesToRemoveAnotherUserFromGroupUsingTheGraphAPI(string $user, string $group, ?string $byUser = null): void {
$groupId = $this->featureContext->getAttributeOfCreatedGroup($group, "id");
$userId = $this->featureContext->getAttributeOfCreatedUser($user, "id");
$this->featureContext->setResponse($this->removeUserFromGroup($groupId, $userId, $byUser));
$this->featureContext->setResponse($this->removeUserFromGroup($group, $user, $byUser));
}
/**
@@ -1243,9 +1223,7 @@ class GraphContext implements Context {
* @throws GuzzleException
*/
public function theUserTriesToRemoveAnotherUserFromNonExistentGroupUsingTheGraphAPI(string $user, ?string $byUser = null): void {
$groupId = WebDavHelper::generateUUIDv4();
$userId = $this->featureContext->getAttributeOfCreatedUser($user, "id");
$this->featureContext->setResponse($this->removeUserFromGroup($groupId, $userId, $byUser));
$this->featureContext->setResponse($this->removeUserFromGroup('', $user, $byUser));
}
/**

View File

@@ -3640,57 +3640,6 @@ trait Provisioning {
return true;
}
/**
* @param string $user
* @param string $group
*
* @return void
* @throws Exception
*/
public function removeUserFromGroupAsAdminUsingTheProvisioningApi(string $user, string $group):void {
$this->userRemovesUserFromGroupUsingTheProvisioningApi(
$this->getAdminUsername(),
$user,
$group
);
}
/**
* @When the administrator removes user :user from group :group using the provisioning API
*
* @param string $user
* @param string $group
*
* @return void
* @throws Exception
*/
public function adminRemovesUserFromGroupUsingTheProvisioningApi(string $user, string $group):void {
$user = $this->getActualUsername($user);
$this->removeUserFromGroupAsAdminUsingTheProvisioningApi(
$user,
$group
);
$this->pushToLastStatusCodesArrays();
}
/**
* @When the administrator removes the following users from the following groups using the provisioning API
*
* @param TableNode $table
*
* @return void
* @throws Exception
*/
public function theAdministratorRemovesTheFollowingUserFromTheFollowingGroupUsingTheProvisioningApi(TableNode $table):void {
$this->verifyTableNodeColumns($table, ['username', 'groupname']);
$this->emptyLastHTTPStatusCodesArray();
$this->emptyLastOCSStatusCodesArray();
foreach ($table as $row) {
$this->adminRemovesUserFromGroupUsingTheProvisioningApi($row['username'], $row['groupname']);
$this->pushToLastStatusCodesArrays();
}
}
/**
* @Given user :user has been removed from group :group
*
@@ -3707,72 +3656,44 @@ trait Provisioning {
) {
$this->removeUserFromLdapGroup($user, $group);
} elseif (OcisHelper::isTestingWithGraphApi()) {
$this->graphContext->adminHasRemovedUserFromGroupUsingTheGraphApi($user, $group);
} else {
$this->removeUserFromGroupAsAdminUsingTheProvisioningApi(
$user,
$group
);
$user = $this->getActualUsername($user);
$response = $this->graphContext->removeUserFromGroup($group, $user);
$this->TheHTTPStatusCodeShouldBe(204, '', $response);
}
$this->userShouldNotBelongToGroup($user, $group);
}
/**
* @When user :user removes user :otherUser from group :group using the provisioning API
* @When the administrator removes user :user from group :group using the provisioning API
*
* @param string $user
* @param string $otherUser
* @param string $group
*
* @return void
* @throws Exception
*/
public function userRemovesUserFromGroupUsingTheProvisioningApi(
string $user,
string $otherUser,
string $group
):void {
$this->userTriesToRemoveUserFromGroupUsingTheProvisioningApi(
$user,
$otherUser,
$group
);
if ($this->response->getStatusCode() !== 200) {
\error_log(
"INFORMATION: could not remove user '$user' from group '$group'"
. $this->response->getStatusCode() . " " . $this->response->getBody()
public function adminRemovesUserFromGroupUsingTheProvisioningApi(string $user, string $group):void {
$user = $this->getActualUsername($user);
if (OcisHelper::isTestingWithGraphApi()) {
$this->setResponse(
$this->graphContext->removeUserFromGroup(
$group,
$user
)
);
} else {
$this->response = UserHelper::removeUserFromGroup(
$this->getBaseUrl(),
$user,
$group,
$this->getAdminUsername(),
$this->getAdminPassword(),
$this->getStepLineRef(),
$this->ocsApiVersion
);
}
}
/**
* @When user :user tries to remove user :otherUser from group :group using the provisioning API
*
* @param string $user
* @param string $otherUser
* @param string $group
*
* @return void
* @throws Exception
*/
public function userTriesToRemoveUserFromGroupUsingTheProvisioningApi(
string $user,
string $otherUser,
string $group
):void {
$actualUser = $this->getActualUsername($user);
$actualPassword = $this->getUserPassword($actualUser);
$actualOtherUser = $this->getActualUsername($otherUser);
$this->response = UserHelper::removeUserFromGroup(
$this->getBaseUrl(),
$actualOtherUser,
$group,
$actualUser,
$actualPassword,
$this->getStepLineRef(),
$this->ocsApiVersion
);
$this->pushToLastStatusCodesArrays();
}
/**
@@ -3928,55 +3849,6 @@ trait Provisioning {
);
}
/**
* @When the administrator removes user :user from being a subadmin of group :group using the provisioning API
*
* @param string $user
* @param string $group
*
* @return void
*/
public function theAdministratorRemovesUserFromBeingASubadminOfGroupUsingTheProvisioningApi(
string $user,
string $group
):void {
$this->userRemovesUserFromBeingASubadminOfGroupUsingTheProvisioningApi(
$this->getAdminUsername(),
$user,
$group
);
}
/**
* @When user :user removes user :otherUser from being a subadmin of group :group using the provisioning API
*
* @param string $user
* @param string $otherUser
* @param string $group
*
* @return void
* @throws Exception
*/
public function userRemovesUserFromBeingASubadminOfGroupUsingTheProvisioningApi(
string $user,
string $otherUser,
string $group
):void {
$actualOtherUser = $this->getActualUsername($otherUser);
$fullUrl = $this->getBaseUrl()
. "/ocs/v$this->ocsApiVersion.php/cloud/users/$actualOtherUser/subadmins";
$actualUser = $this->getActualUsername($user);
$actualPassword = $this->getUserPassword($actualUser);
$this->response = HttpRequestHelper::delete(
$fullUrl,
$this->getStepLineRef(),
$actualUser,
$actualPassword,
null,
['groupid' => $group]
);
}
/**
* @Then /^the users returned by the API should be$/
*

View File

@@ -151,7 +151,7 @@ Feature: sharing
| 1 | 200 |
| 2 | 404 |
@issue-1289 @skipOnGraph
@issue-1289
Scenario: share a folder to a group, and remove user from that group
Given using OCS API version "1"
And user "Carol" has been created with default attributes and without skeleton files
@@ -164,7 +164,7 @@ Feature: sharing
And user "Brian" has accepted share "/PARENT" offered by user "Alice"
And user "Carol" has accepted share "/PARENT" offered by user "Alice"
When the administrator removes user "Carol" from group "group0" using the provisioning API
Then the HTTP status code should be "200"
Then the HTTP status code should be "204"
And user "Brian" should see the following elements
| /Shares/PARENT/ |
| /Shares/PARENT/parent.txt |