This commit is contained in:
m7913d 2021-06-03 15:59:38 -04:00 committed by GitHub
commit c82319cf2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 58 additions and 2 deletions

View File

@ -234,10 +234,11 @@ class GroupsController extends AUserData {
* @PasswordConfirmationRequired
*
* @param string $groupid
* @param string $displayname
* @return DataResponse
* @throws OCSException
*/
public function addGroup(string $groupid): DataResponse {
public function addGroup(string $groupid, string $displayname = ''): DataResponse {
// Validate name
if (empty($groupid)) {
$this->logger->error('Group name not supplied', ['app' => 'provisioning_api']);
@ -247,7 +248,13 @@ class GroupsController extends AUserData {
if ($this->groupManager->groupExists($groupid)) {
throw new OCSException('group exists', 102);
}
$this->groupManager->createGroup($groupid);
$group = $this->groupManager->createGroup($groupid);
if ($group === null) {
throw new OCSException('Not supported by backend', 103);
}
if ($displayname !== '') {
$group->setDisplayName($displayname);
}
return new DataResponse();
}

View File

@ -176,6 +176,38 @@ trait Provisioning {
}
}
}
/**
* @Then /^group "([^"]*)" has$/
*
* @param string $user
* @param \Behat\Gherkin\Node\TableNode|null $settings
*/
public function groupHasSetting($group, $settings) {
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/cloud/groups/details?search=$group";
$client = new Client();
$options = [];
if ($this->currentUser === 'admin') {
$options['auth'] = $this->adminUser;
} else {
$options['auth'] = [$this->currentUser, $this->regularUser];
}
$options['headers'] = [
'OCS-APIREQUEST' => 'true',
];
$response = $client->get($fullUrl, $options);
$groupDetails = simplexml_load_string($response->getBody())->data[0]->groups[0]->element;
foreach ($settings->getRows() as $setting) {
$value = json_decode(json_encode($groupDetails->{$setting[0]}), 1);
if (isset($value[0])) {
Assert::assertEquals($setting[1], $value[0], "", 0.0, 10, true);
} else {
Assert::assertEquals('', $setting[1]);
}
}
}
/**
* @Then /^user "([^"]*)" has editable fields$/

View File

@ -231,6 +231,21 @@ Feature: provisioning
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And group "new-group" exists
And group "new-group" has
| displayname | new-group |
Scenario: Create a group with custom display name
Given As an "admin"
And group "new-group" does not exist
When sending "POST" to "/cloud/groups" with
| groupid | new-group |
| password | 123456 |
| displayname | new-group-displayname |
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And group "new-group" exists
And group "new-group" has
| displayname | new-group-displayname |
Scenario: Create a group with special characters
Given As an "admin"
@ -241,6 +256,8 @@ Feature: provisioning
Then the OCS status code should be "100"
And the HTTP status code should be "200"
And group "España" exists
And group "España" has
| displayname | España |
Scenario: adding user to a group without sending the group
Given As an "admin"