diff options
-rw-r--r-- | apps/dav/lib/CardDAV/SystemAddressbook.php | 2 | ||||
-rw-r--r-- | lib/private/Contacts/ContactsMenu/ContactsStore.php | 2 | ||||
-rw-r--r-- | tests/acceptance/features/bootstrap/SettingsContext.php | 44 | ||||
-rw-r--r-- | tests/acceptance/features/header.feature | 11 | ||||
-rw-r--r-- | tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php | 6 |
5 files changed, 60 insertions, 5 deletions
diff --git a/apps/dav/lib/CardDAV/SystemAddressbook.php b/apps/dav/lib/CardDAV/SystemAddressbook.php index 61a0b57a4dd..18c63d916d7 100644 --- a/apps/dav/lib/CardDAV/SystemAddressbook.php +++ b/apps/dav/lib/CardDAV/SystemAddressbook.php @@ -42,7 +42,7 @@ class SystemAddressbook extends AddressBook { public function getChildren() { $shareEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes'; - $restrictShareEnumeration = $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'yes') === 'yes'; + $restrictShareEnumeration = $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes'; if (!$shareEnumeration || ($shareEnumeration && $restrictShareEnumeration)) { return []; } diff --git a/lib/private/Contacts/ContactsMenu/ContactsStore.php b/lib/private/Contacts/ContactsMenu/ContactsStore.php index 961bb3147c5..8199db952af 100644 --- a/lib/private/Contacts/ContactsMenu/ContactsStore.php +++ b/lib/private/Contacts/ContactsMenu/ContactsStore.php @@ -108,7 +108,7 @@ class ContactsStore implements IContactsStore { array $entries, $filter) { $disallowEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') !== 'yes'; - $restrictEnumeration = $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'yes') === 'yes'; + $restrictEnumeration = $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes'; $excludedGroups = $this->config->getAppValue('core', 'shareapi_exclude_groups', 'no') === 'yes'; // whether to filter out local users diff --git a/tests/acceptance/features/bootstrap/SettingsContext.php b/tests/acceptance/features/bootstrap/SettingsContext.php index 82b22c43338..5f9a724e771 100644 --- a/tests/acceptance/features/bootstrap/SettingsContext.php +++ b/tests/acceptance/features/bootstrap/SettingsContext.php @@ -49,6 +49,25 @@ class SettingsContext implements Context, ActorAwareInterface { /** * @return Locator */ + public static function restrictUsernameAutocompletionToGroupsCheckbox() { + // forThe()->checkbox("Restrict username...") can not be used here; that + // would return the checkbox itself, but the element that the user + // interacts with is the label. + return Locator::forThe()->xpath("//label[normalize-space() = 'Restrict username autocompletion to users within the same groups']")-> + describedAs("Restrict username autocompletion to groups checkbox in Sharing section in Administration Sharing Settings"); + } + + /** + * @return Locator + */ + public static function restrictUsernameAutocompletionToGroupsCheckboxInput() { + return Locator::forThe()->checkbox("Restrict username autocompletion to users within the same groups")-> + describedAs("Restrict username autocompletion to groups checkbox input in Sharing section in Administration Sharing Settings"); + } + + /** + * @return Locator + */ public static function systemTagsSelectTagButton() { return Locator::forThe()->id("s2id_systemtag")-> describedAs("Select tag button in system tags section in Administration Settings"); @@ -113,6 +132,15 @@ class SettingsContext implements Context, ActorAwareInterface { } /** + * @When I enable restricting username autocompletion to groups + */ + public function iEnableRestrictingUsernameAutocompletionToGroups() { + $this->iSeeThatUsernameAutocompletionIsNotRestrictedToGroups(); + + $this->actor->find(self::restrictUsernameAutocompletionToGroupsCheckbox(), 2)->click(); + } + + /** * @When I create the tag :tag in the settings */ public function iCreateTheTagInTheSettings($tag) { @@ -130,6 +158,22 @@ class SettingsContext implements Context, ActorAwareInterface { } /** + * @Then I see that username autocompletion is restricted to groups + */ + public function iSeeThatUsernameAutocompletionIsRestrictedToGroups() { + PHPUnit_Framework_Assert::assertTrue( + $this->actor->find(self::restrictUsernameAutocompletionToGroupsCheckboxInput(), 10)->isChecked()); + } + + /** + * @Then I see that username autocompletion is not restricted to groups + */ + public function iSeeThatUsernameAutocompletionIsNotRestrictedToGroups() { + PHPUnit_Framework_Assert::assertFalse( + $this->actor->find(self::restrictUsernameAutocompletionToGroupsCheckboxInput(), 10)->isChecked()); + } + + /** * @Then I see that shares are not accepted by default */ public function iSeeThatSharesAreNotAcceptedByDefault() { diff --git a/tests/acceptance/features/header.feature b/tests/acceptance/features/header.feature index 04d5963668d..94b08e8f6d9 100644 --- a/tests/acceptance/features/header.feature +++ b/tests/acceptance/features/header.feature @@ -28,6 +28,17 @@ Feature: header And I see that the contact "user0" in the Contacts menu is shown And I see that the contact "admin" in the Contacts menu is not shown + Scenario: users from other groups are not seen in the contacts menu when autocompletion is restricted within the same group + Given I am logged in as the admin + And I visit the settings page + And I open the "Sharing" section of the "Administration" group + And I enable restricting username autocompletion to groups + And I see that username autocompletion is restricted to groups + When I open the Contacts menu + Then I see that the Contacts menu is shown + And I see that the contact "user0" in the Contacts menu is not shown + And I see that the contact "admin" in the Contacts menu is not shown + Scenario: just added users are seen in the contacts menu Given I am logged in as the admin And I open the User settings diff --git a/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php b/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php index 31b0261cb80..82619fb5679 100644 --- a/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php +++ b/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php @@ -178,7 +178,7 @@ class ContactsStoreTest extends TestCase { $this->config->expects($this->at(1)) ->method('getAppValue') - ->with($this->equalTo('core'), $this->equalTo('shareapi_restrict_user_enumeration_to_group'), $this->equalTo('yes')) + ->with($this->equalTo('core'), $this->equalTo('shareapi_restrict_user_enumeration_to_group'), $this->equalTo('no')) ->willReturn('no'); $this->config->expects($this->at(2)) @@ -234,7 +234,7 @@ class ContactsStoreTest extends TestCase { ->willReturn('yes'); $this->config->expects($this->at(1)) ->method('getAppValue') - ->with($this->equalTo('core'), $this->equalTo('shareapi_restrict_user_enumeration_to_group'), $this->equalTo('yes')) + ->with($this->equalTo('core'), $this->equalTo('shareapi_restrict_user_enumeration_to_group'), $this->equalTo('no')) ->willReturn('no'); $this->config->expects($this->at(2)) ->method('getAppValue') @@ -320,7 +320,7 @@ class ContactsStoreTest extends TestCase { ->willReturn('yes'); $this->config->expects($this->at(1)) ->method('getAppValue') - ->with($this->equalTo('core'), $this->equalTo('shareapi_restrict_user_enumeration_to_group'), $this->equalTo('yes')) + ->with($this->equalTo('core'), $this->equalTo('shareapi_restrict_user_enumeration_to_group'), $this->equalTo('no')) ->willReturn('yes'); $this->config->expects($this->at(2)) ->method('getAppValue') |