diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-08-05 10:56:40 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2020-08-05 14:14:06 +0200 |
commit | 907d3542dc478a081b95bfaf2811b4381a22c76c (patch) | |
tree | 4510fc828b5ffb89f871a4a0c6e6fd50ef287386 /build | |
parent | fee13e7ffde273b2474684ed7326d79a4c0c6a07 (diff) | |
download | nextcloud-server-907d3542dc478a081b95bfaf2811b4381a22c76c.tar.gz nextcloud-server-907d3542dc478a081b95bfaf2811b4381a22c76c.zip |
Add integration tests for search in groups
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'build')
-rw-r--r-- | build/integration/features/bootstrap/Provisioning.php | 48 | ||||
-rw-r--r-- | build/integration/features/provisioning-v2.feature | 14 |
2 files changed, 61 insertions, 1 deletions
diff --git a/build/integration/features/bootstrap/Provisioning.php b/build/integration/features/bootstrap/Provisioning.php index c6cfa881fb5..daf5b11569c 100644 --- a/build/integration/features/bootstrap/Provisioning.php +++ b/build/integration/features/bootstrap/Provisioning.php @@ -70,6 +70,23 @@ trait Provisioning { } /** + * @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', ]; @@ -541,6 +561,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 */ @@ -600,6 +634,18 @@ trait Provisioning { } /** + * 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. * * @param ResponseInterface $resp diff --git a/build/integration/features/provisioning-v2.feature b/build/integration/features/provisioning-v2.feature index def9b376d21..729c812cb8c 100644 --- a/build/integration/features/provisioning-v2.feature +++ b/build/integration/features/provisioning-v2.feature @@ -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 | |