Add integration tests for search in groups

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
Morris Jobke 2020-08-05 10:56:40 +02:00 committed by backportbot[bot]
parent 74e98940ef
commit 940a2732b9
2 changed files with 61 additions and 1 deletions

View File

@ -69,6 +69,23 @@ trait Provisioning {
Assert::assertEquals(200, $this->response->getStatusCode());
}
/**
* @Given /^user "([^"]*)" with displayname "([^"]*)" exists$/
* @param string $user
*/
public function assureUserWithDisplaynameExists($user, $displayname) {
try {
$this->userExists($user);
} catch (\GuzzleHttp\Exception\ClientException $ex) {
$previous_user = $this->currentUser;
$this->currentUser = "admin";
$this->creatingTheUser($user, $displayname);
$this->currentUser = $previous_user;
}
$this->userExists($user);
Assert::assertEquals(200, $this->response->getStatusCode());
}
/**
* @Given /^user "([^"]*)" does not exist$/
* @param string $user
@ -93,7 +110,7 @@ trait Provisioning {
}
}
public function creatingTheUser($user) {
public function creatingTheUser($user, $displayname = '') {
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/users";
$client = new Client();
$options = [];
@ -105,6 +122,9 @@ trait Provisioning {
'userid' => $user,
'password' => '123456'
];
if ($displayname !== '') {
$options['form_params']['displayName'] = $displayname;
}
$options['headers'] = [
'OCS-APIREQUEST' => 'true',
];
@ -540,6 +560,20 @@ trait Provisioning {
}
}
/**
* @Then /^detailed users returned are$/
* @param \Behat\Gherkin\Node\TableNode|null $usersList
*/
public function theDetailedUsersShouldBe($usersList) {
if ($usersList instanceof \Behat\Gherkin\Node\TableNode) {
$users = $usersList->getRows();
$usersSimplified = $this->simplifyArray($users);
$respondedArray = $this->getArrayOfDetailedUsersResponded($this->response);
$respondedArray = array_keys($respondedArray);
Assert::assertEquals($usersSimplified, $respondedArray);
}
}
/**
* @Then /^groups returned are$/
* @param \Behat\Gherkin\Node\TableNode|null $groupsList
@ -599,6 +633,18 @@ trait Provisioning {
return $extractedElementsArray;
}
/**
* Parses the xml answer to get the array of detailed users returned.
*
* @param ResponseInterface $resp
* @return array
*/
public function getArrayOfDetailedUsersResponded($resp) {
$listCheckedElements = simplexml_load_string($resp->getBody())->data[0]->users;
$extractedElementsArray = json_decode(json_encode($listCheckedElements), 1);
return $extractedElementsArray;
}
/**
* Parses the xml answer to get the array of groups returned.
*

View File

@ -19,3 +19,17 @@ Feature: provisioning
Then the OCS status code should be "998"
And the HTTP status code should be "404"
Scenario: Searching by displayname in groups
Given As an "admin"
And user "user-in-group" with displayname "specific-name" exists
And user "user-in-group2" with displayname "another-name" exists
And user "user-not-in-group" with displayname "specific-name" exists
And user "user-not-in-group2" with displayname "another-name" exists
And group "group-search" exists
And user "user-in-group" belongs to group "group-search"
And user "user-in-group2" belongs to group "group-search"
When sending "GET" to "/cloud/groups/group-search/users/details?offset=0&limit=25&search=ifi"
Then the OCS status code should be "200"
And the HTTP status code should be "200"
And detailed users returned are
| user-in-group |