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 * @PasswordConfirmationRequired
* *
* @param string $groupid * @param string $groupid
* @param string $displayname
* @return DataResponse * @return DataResponse
* @throws OCSException * @throws OCSException
*/ */
public function addGroup(string $groupid): DataResponse { public function addGroup(string $groupid, string $displayname = ''): DataResponse {
// Validate name // Validate name
if (empty($groupid)) { if (empty($groupid)) {
$this->logger->error('Group name not supplied', ['app' => 'provisioning_api']); $this->logger->error('Group name not supplied', ['app' => 'provisioning_api']);
@ -247,7 +248,13 @@ class GroupsController extends AUserData {
if ($this->groupManager->groupExists($groupid)) { if ($this->groupManager->groupExists($groupid)) {
throw new OCSException('group exists', 102); 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(); 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$/ * @Then /^user "([^"]*)" has editable fields$/

View File

@ -231,6 +231,21 @@ Feature: provisioning
Then the OCS status code should be "100" Then the OCS status code should be "100"
And the HTTP status code should be "200" And the HTTP status code should be "200"
And group "new-group" exists 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 Scenario: Create a group with special characters
Given As an "admin" Given As an "admin"
@ -241,6 +256,8 @@ Feature: provisioning
Then the OCS status code should be "100" Then the OCS status code should be "100"
And the HTTP status code should be "200" And the HTTP status code should be "200"
And group "España" exists And group "España" exists
And group "España" has
| displayname | España |
Scenario: adding user to a group without sending the group Scenario: adding user to a group without sending the group
Given As an "admin" Given As an "admin"